Systems and methods for providing modular configurable creative units for delivery via intext advertising

ABSTRACT

The present disclosure relates to systems and methods for creating, via a development tool, a unit type for display on a web page in response to a keyword on the web page. A development tool may identify a unit type template for creating a unit type. The unit type may comprise a tooltip for augmenting a keyword on a web page. A user may select, via the development tool, a media block component to add to the unit type. The user may place the media block component on a layout of the unit type. The development tool may generate script code to define the layout of the unit type as a set of cells and rows within a predetermined sized container. The media block component may be placed in a cell and a row of the set of cells and rows. The script code may provide execution direction for rendering media of the media block component while displaying the unit type.

FIELD OF THE INVENTION

This disclosure generally relates to the field of web page development,in particular to tools for developing modular and configurable creativeunits for delivering to a web page providing intext advertising orrelated content.

BACKGROUND

An enterprise serving web pages to a user may wish to provide the userwith an easier and quicker access to information the user is lookingfor. The services of the enterprise may aim to increase the user'ssatisfaction by decreasing the amount of time the user spends findingthe relevant information. As the user searches the world wide web forthe relevant information, the user may often open many new web pageswhich do not include the relevant content. The user may become even moredissatisfied when the old web pages from which the user began searchingare closed or lost during the search process. The enterprise may wish toprovide the user with an option to find the relevant information withouthaving to exit the current web page in order to access a next one, whichmay or may not include the information the user is looking for.

Hypertext is a computer based text used in a web page to provideinformation to a user and organize the web page content intointerconnected associations. These associations may enable the user toeasily access information the user chooses or clicks. An instance ofsuch an association is called a hyperlink or hypertext link. Ahyperlink, when selected, leads the viewer to another web page (or fileor resource, collectively called the destination page).

In order to access the supplemental information provided throughhyperlinks, viewers are required to leave their current web pages. Thisrequirement interrupts the viewers' web browsing experience. As aresult, most viewers are reluctant to visit the destination pageprovided by hyperlinks.

In addition, traditionally the hyperlinks are generated by humaneditors, a process that is both tedious and subject to human errors.Further, by the time a viewer tries to visit a destination page of ahyperlink, the destination page may cease to exist or have evolved to nolonger provide the related information.

In some cases, the viewer leaves the web page to visit a destinationpage that does not have information desired by the viewer. The user thenmay have to search for other destination pages to try to obtain thedesired information. This may lead the viewer to perform multiplesearches and visit several pages to find the desired information. Theviewer may become dissatisfied with the amount of activity to find thedesired information and with leaving the current destination page to doso.

SUMMARY OF THE INVENTION

Systems and methods of the present solution enable an enterprise, suchas a publisher agency or an advertiser, to develop standardized tooltipsor user overlay interfaces for display on remote clients using a userfriendly software tool. Systems and methods of the present solutionfurther relate to a development tool that enables users to design,develop and generate a unit type comprising a tooltip that includes userand/or keyword relevant content to be displayed over a web page accessedby a remote client in response to the client selection of a keyword ofthe web page. Systems and methods of the present solution enabledesigners or users of the development tool to more easily design theunit types by using modular components and templates to customize theunit types. The user may design the contents of the unit type with userselected modular media blocks along with other creative elements andarrangement of the same.

In some aspects, the present disclosure relates to a method forcreating, via a development tool, a unit type for display on a web pagein response to a keyword on the web page. A development tool mayidentify a unit type template for creating a unit type. The unit typemay comprise a tooltip for augmenting a keyword on a web page. A usermay select, via the development tool, a media block component to add tothe unit type. The user may place the media block component on a layoutof the unit type. The development tool may generate script code todefine the layout of the unit type as a set of cells and rows within apredetermined sized container. The media block component may be placedin a cell and a row of the set of cells and rows. The script code mayprovide execution direction for rendering media of the media blockcomponent while displaying the unit type.

In some embodiments, a user identifies via the development tool the unittype template comprising the tooltip with a predetermined set of designand functional elements. The user may create, via the development tool,the unit type based on the unit type template selected from a pluralityof unit type templates. The user may select, via the development tool,an advertisement footer component to add to the unit type. In someembodiments, the user selects, via the development tool, the media blockcomponent comprising a component for displaying video media. In furtherembodiments, the user places, via the development tool, the media blockcomponent into a cell in a design layout of the unit type. In someembodiments, the user arranges, via the development tool, a location ofthe media block component and one or more text block components in adesign layout of the unit type. In some embodiments, a file is createdfor the unit type. The file may comprise the generated script code. Infurther embodiments, the script code is generated to define propertiesof the tooltip. In still further embodiments, the script code isgenerated to include functions for the media block component.

In some aspects, the present disclosure relates to a system for creatinga unit type for display on a web page responsive to a keyword on the webpage. The system may comprise a development tool may identify a unittype template for creating a unit type. The unit type may comprise atooltip for augmenting a keyword on a web page. The system may alsoinclude a media block component selectable by a user to be added to theunit type. The system may further include a design layout in thedevelopment tool for placing the media block component in a locationwithin the unit type. The system may also include a unit type generatorfor generating script code to define the layout of the unit type as aset of cells and rows within a predetermined sized container. The mediablock component may be placed in a cell and a row of the set of cellsand rows. The script code may provide execution direction for renderingmedia of the media block component while displaying the unit type.

In some embodiments, the unit type template comprises the tooltip with apredetermined set of design and functional elements. In otherembodiments, the development tool comprises a user interface for theuser to create the unit type based on the unit type template selectedfrom a plurality of unit type templates. In further embodiments, thedevelopment tool comprises an advertisement footer component selectableby the user to add to the unit type. In still further embodiments, themedia block component comprises a component for displaying video media.In yet further embodiments, the development tool comprises a userinterface for the user to place the media block component into a cell inthe design layout of the unit type. In still further embodiments, thedevelopment tool comprises a user interface for the user to arrange thelocation of the media block component and one or more text blockcomponents in the design layout of the unit type. In yet furtherembodiments, the unit type generator creates a file for the unit type.The file may comprise the generated script code. In some embodiments,the unit type generator generates the script code to define propertiesof the tooltip. In further embodiments, the unit type generatorgenerates the script code to include functions for the media blockcomponent.

BRIEF DESCRIPTION OF DRAWINGS

The foregoing and other objects, aspects, features, and advantages ofthe present invention will become more apparent and better understood byreferring to the following description taken in conjunction with theaccompanying drawings, in which:

FIG. 1A is a block diagram that depicts an embodiment of an environmentfor providing systems and methods described herein.

FIGS. 1B and 1C are block diagrams of computing devices that may be usedin any of the embodiments of the systems and methods described herein

FIG. 2 is a block diagram that depicts an embodiment of an augmentationserver in FIG. 1.

FIG. 3A is a flow diagram of an embodiment of a method of producingaugmented content.

FIG. 3B is a flow diagram of an embodiment of a method of providingaugmented content to users.

FIG. 3C is a flow diagram of an embodiment of a process of operation ofadvertisement and client code.

FIGS. 4A through 4E are screenshots illustrating a web page, itscorresponding augmented web page, and a viewer's user experienceinteracting with the augmented web page according to embodiments of thepresent disclosure.

FIG. 5A is block diagram of an embodiment of an ad server platform andplatform services.

FIG. 5B is a diagram of an embodiment of stages of a request from aclient for platform services.

FIG. 5C is a diagram of an embodiment of contextual targeting.

FIG. 5D is a diagram of another embodiment of contextual targeting.

FIG. 5E is a diagram of an embodiment of contextual and behavioraltargeting.

FIG. 5F is a diagram of another embodiment of contextual and behavioraltargeting.

FIG. 5G is a diagram of another embodiment of contextual and behavioraltargeting.

FIG. 5H is a diagram of an embodiment of a campaign selection engine.

FIG. 5I is block diagram of an embodiment of a system to provideaugmented content for a keyword on a web page.

FIG. 5J is a diagrammatic view of an embodiment of augmented content.

FIG. 5K is a flow diagram of an embodiment of a method for deliveringaugmented content for a keyword on a web page.

FIG. 6A is a block diagram of an embodiment of a system for providingrelated content;

FIG. 6B is a diagram of an embodiment of a user interface for deliveringrelated content;

FIG. 6C is a diagram of another embodiment of a user interface fordelivering related content;

FIG. 6D is a diagram of another embodiment of a user interface fordelivering related content;

FIG. 6E is a diagram of another embodiment of a user interface fordelivering related content;

FIG. 6F is a diagram of another embodiment of a user interface fordelivering related content;

FIG. 6G is a diagram of another embodiment of a user interface fordelivering related content;

FIG. 7 is a flow diagram of an embodiment of a method for deliveringrelated content;

FIG. 8A is a block diagram of an embodiment of a system for designingand developing a unit type using modular components;

FIG. 8B is a block diagram of an embodiment of a user interface of adevelopment tool for creating a unit type;

FIG. 8C is a block diagram of an embodiment of a structure panel of thedevelopment tool;

FIG. 8D is another block diagram of an embodiment of a unit type createdusing the development tool;

FIG. 8E is an embodiment of a unit type created using the developmenttool;

FIG. 8F is a diagram of another embodiment of a tooltip comprised withinthe unit type created by the development tool;

FIGS. 8G and 8H are embodiments of the tooltip content container of theunit type;

FIG. 8I is a flow diagram of an embodiment of a method for determiningplacement of the unit type; and

FIG. 8K is a flow diagram of an embodiment of a method for creating aunit type using the development tool.

In the drawings, like reference numbers generally indicate identical,functionally similar, and/or structurally similar elements.

DETAILED DESCRIPTION

For purposes of reading the description of the various embodimentsbelow, the following descriptions of the sections of the specificationand their respective contents may be helpful:

-   -   Section A describes a network and computing environment which        may be useful for practicing embodiments described herein;    -   Section B describes embodiments of systems and methods for        delivering a augmented content;    -   Section C describes embodiments of systems and methods of an ad        server platform for delivering a plurality of advertisement and        augmented content services;    -   Section D describes embodiments of systems and methods for        delivering related video content to augment keywords on a web        page; and    -   Section E describes embodiments of systems and methods for        design and development of unit types via a development tool

A. System and Network Environment

Some of the disclosed embodiments describe examples of a method (andcorresponding system and computer program product) for augmenting fileswith related resources through layered augmentation. Viewers of theaugmented files can access the related resources through a multi-layereddialog box. The process of providing additional resources throughmultilayered dialog box and the multi-layered dialog box arecollectively called layered augmentation.

An embodiment of the method identifies data in a file, associates theidentified data with reference data in a reference database, and storesthe associations in a corresponding augmented file. A viewer of theaugmented file can access resources related to a piece of augmented datathrough layered augmentation. When the viewer moves a pointer over thepiece of augmented data (also called mouse-over), the related resourcesare provided in a multi-layered dialog box. The dialog box is overlaidon the augmented file approximate to the position where the mouse-overoccurred. The viewer can navigate through the related resources in thedialog box without leaving the augmented file.

As described herein, a file includes any types of documents such as webpages. Augmented data, the data with integrated association in anaugmented file, include any types of content such as text and image.Resources provided through layered augmentations include textualcontent, visual content such as images and videos, interactive controlssuch as dialog boxes, and services such as Internet search service andadvertisement. A pointer can be any pointer device such as a mouse, atrackball, a roller, and a touchpad. For purposes of illustration, themethod (and corresponding system and computer program product) isdescribed in terms of augmenting keywords (or key phrases) in web pagesand delivering related advertisements through multi-layered dialog boxesbased on user interactions with the augmented keywords, even though thedisclosed embodiments apply to all other types of content, files, andresources as defined above.

The figures and the following description relate to preferredembodiments by way of illustration only. Reference will now be made indetail to several embodiments, examples of which are illustrated in theaccompanying figures. The figures depict embodiments of the disclosedsystem (or method) for purposes of illustration only. It should be notedthat from the following discussion, other or alternate embodiments ofthe structures and methods disclosed herein will be readily recognizedby one skilled in the art as viable alternatives that may be employedwithout departing from the principles described herein.

FIG. 1A illustrates an embodiment of a computing environment 100 foraugmenting web pages and providing viewers of the augmented web pageswith related advertisements through layered augmentation based on userinteraction. As illustrated, the computing environment 100 includes anaugmentation server 110, multiple content providers (or websites) 120,and one or more client computers (or user systems) 130, all of which arecommunicatively coupled through a network 140.

The augmentation server 110 is configured to augment keywords (or othertypes of content) in web pages (or other types of documents) withadvertisements (or other types of resources), and deliver theadvertisements based on user interaction with the augmented keywords.The augmentation server 110 retrieves web pages from the contentproviders 120 and augments the web pages. The augmentation server 110augments a web page by identifying keywords in the web page, associating(or tagging) the keywords with one or more related references in areference database, generating an augmented web page, and storing theassociations in a database. When a user views an augmented web page in aclient computer 130 and moves a pointer over one of the augmentedkeywords (hereinafter “the activated keyword”), the augmentation server110 displays (or avails) related advertisements in the client computer130 through a multi-layered dialog box. An example architecture of theaugmentation server 110 is described in detail below with respect toFIG. 2.

The content providers 120 are entities that provide (or generate), host,publish, control, or otherwise have rights over a collection of webpages (or other types of documents). In one embodiment, the contentproviders 120 are web servers hosting web pages for viewers to access.The content providers 120 may provide web pages to the augmentationserver 110 for layered augmentation. Alternatively, the contentproviders 120 may either instruct or give permission to the augmentationserver 110 to retrieve all or parts of their web pages for layeredaugmentation.

A client 130 may comprise any personal computer (e.g., based on amicroprocessor from the x86 family, the Pentium family, the 680x0family, PowerPC, PA-RISC, MIPS families, the ARM family, the Cellfamily), network computer, wireless device (e.g. mobile computer, PDA,smartphone), information appliance, workstation, minicomputer, mainframecomputer, telecommunications or media device that is capable ofcommunication and that has sufficient processor power and memorycapacity to perform the operations described herein. For example, theclient 130 may comprise a device of the IPOD family of devicesmanufactured by Apple Computer of Cupertino, Calif., a PLAYSTATION 2,PLAYSTATION 3, or PERSONAL PLAYSTATION PORTABLE (PSP) devicemanufactured by the Sony Corporation of Tokyo, Japan, a NINTENDO DS,NINTENDO GAMEBOY, NINTENDO GAMEBOY ADVANCED, NINTENDO REVOLUTION, orNINTENDO WII device manufactured by Nintendo Co., Ltd., of Kyoto, Japan,or an XBOX or XBOX 360 device manufactured by the Microsoft Corporationof Redmond, Wash. In some embodiments, the client may include any of theKindle family of devices sold or provided by Amazon.com.

Operating systems supported by the client 130 can include any member ofthe WINDOWS family of operating systems from Microsoft Corporation ofRedmond, Wash., MacOS, JavaOS, various varieties of Unix (e.g., Solaris,SunOS, Linux, HP-UX, A/IX, and BSD-based distributions), any embeddedoperating system, any real-time operating system, any open sourceoperating system, any proprietary operating system, any operatingsystems for mobile computing devices, or any other operating systemcapable of running on the computing device and performing the operationsdescribed herein. Typical operating systems include: WINDOWS 3.x,WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0,WINDOWS CE, WINDOWS XP, and WINDOWS VISTA, all of which are manufacturedby Microsoft Corporation of Redmond, Wash.; MaC OSX, manufactured byApple Computer of Cupertino, Calif.; OS/2, manufactured by InternationalBusiness Machines of Armonk, N.Y.; and Linux, an open source operatingsystem distributed by, among others, Red Hat, Inc., or any type and/orform of a Unix operating system, among others.

The client computers 130 may be any type and form of client devices forusers to browse web pages (or other types of documents). In oneembodiment, a client computer 130 includes a pointer device (e.g., amouse, a trackball, a roller, a touchpad, or the like), a conventionalweb browser (e.g., Microsoft Internet Explorer™, Mozilla Firefox™, orApple Safari™), and can retrieve and display web pages from the contentproviders 120 in a conventional manner (e.g., using the HyperTextTransfer Protocol). In one embodiment, the client computer 130 displaysaugmented keywords in an augmented web page differently than thenon-augmented content. For example, the augmented keywords can bedisplayed in a double underline style and/or in a color distinctive fromtexts that are not augmented. When a user moves a pointer (e.g., mousepointer) over (e.g., mouse-over) an augmented keyword in the augmentedweb page, the client computer 130 (or the utilized web browser)generates a request and transmits the request to the augmentation server110. The augmentation server 110 receives the request and determinesrelevant advertisements to transmit to the client computer 130. Theclient computer 130 (or the utilized web browser) displays theadvertisements retrieved from the augmentation server 110 in amulti-layered dialog box overlaying the augmented web page and proximateto the location where the mouse-over occurred. The multi-layered dialogbox displays an advertisement and multiple clickable tabs representingthe other retrieved advertisements. The viewer can select (e.g., click)a tab to request the dialog box to display the correspondingadvertisement. The viewer may navigate among the multiple advertisementsand interact with the advertisements without leaving the augmented webpage.

The network 140 is configured to communicatively connect theaugmentation server 110, the content providers 120, and the clientcomputers 130. The network 140 may be a wired or wireless network.Examples of the network 140 include the Internet, an intranet, a WiFinetwork, a WiMAX network, a mobile telephone network, or a combinationthereof. The network 140 may be any type and/or form of network and mayinclude any of the following: a point to point network, a broadcastnetwork, a wide area network, a local area network, a telecommunicationsnetwork, a data communication network, a computer network, an ATM(Asynchronous Transfer Mode) network, a SONET (Synchronous OpticalNetwork) network, a SDH (Synchronous Digital Hierarchy) network, awireless network and a wireline network. In some embodiments, thenetwork 140 may comprise a wireless link, such as an infrared channel orsatellite band. The topology of the network 140 may be a bus, star, orring network topology. The network 140 and network topology may be ofany such network or network topology as known to those ordinarilyskilled in the art capable of supporting the operations describedherein. The network may comprise mobile telephone networks utilizing anyprotocol or protocols used to communicate among mobile devices,including AMPS, TDMA, CDMA, GSM, GPRS or UMTS. In some embodiments,different types of data may be transmitted via different protocols. Inother embodiments, the same types of data may be transmitted viadifferent protocols.

In one embodiment, the augmentation server 110, the content providers120, and/or the client computers 130 are structured to include aprocessor, memory, storage, network interfaces, and applicable operatingsystem and other functional software (e.g., network drivers,communication protocols). The client 120, server 110, and contentproviders 120 may be deployed as and/or executed on any type and form ofcomputing device, such as a computer, network device or appliancecapable of communicating on any type and form of network and performingthe operations described herein.

FIGS. 1B and 1C depict block diagrams of a computing device 100 usefulfor practicing an embodiment of the client 130, server 110 or contentprovider 120. As shown in FIGS. 1B and 1C, each computing device 100includes a central processing unit 101, and a main memory unit 122. Asshown in FIG. 1B, a computing device 100 may include a visual displaydevice 124, a keyboard 126 and/or a pointing device 127, such as amouse. Each computing device 100 may also include additional optionalelements, such as one or more input/output devices 131 a-131 b(generally referred to using reference numeral 131), and a cache memory140 in communication with the central processing unit 101.

The central processing unit 101 is any logic circuitry that responds toand processes instructions fetched from the main memory unit 122. Inmany embodiments, the central processing unit is provided by amicroprocessor unit, such as: those manufactured by Intel Corporation ofMountain View, Calif.; those manufactured by Motorola Corporation ofSchaumburg, Ill.; those manufactured by Transmeta Corporation of SantaClara, Calif.; the RS/6000 processor, those manufactured byInternational Business Machines of White Plains, N.Y.; or thosemanufactured by Advanced Micro Devices of Sunnyvale, Calif. Thecomputing device 100 may be based on any of these processors, or anyother processor capable of operating as described herein.

Main memory unit 122 may be one or more memory chips capable of storingdata and allowing any storage location to be directly accessed by themicroprocessor 101, such as Static random access memory (SRAM), BurstSRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM),Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended DataOutput RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), BurstExtended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM),synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data RateSDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM),Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM). The mainmemory 122 may be based on any of the above described memory chips, orany other available memory chips capable of operating as describedherein. In the embodiment shown in FIG. 1B, the processor 101communicates with main memory 122 via a system bus 150 (described inmore detail below). FIG. 1C depicts an embodiment of a computing device100 in which the processor communicates directly with main memory 122via a memory port 103. For example, in FIG. 1B the main memory 122 maybe DRAM.

FIG. 1C depicts an embodiment in which the main processor 101communicates directly with cache memory 140 via a secondary bus,sometimes referred to as a backside bus. In other embodiments, the mainprocessor 101 communicates with cache memory 140 using the system bus150. Cache memory 140 typically has a faster response time than mainmemory 122 and is typically provided by SRAM, BSRAM, or EDRAM. In theembodiment shown in FIG. 1C, the processor 101 communicates with variousI/O devices 131 via a local system bus 150. Various busses may be usedto connect the central processing unit 101 to any of the I/O devices131, including a VESA VL bus, an ISA bus, an EISA bus, a MicroChannelArchitecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or aNuBus. For embodiments in which the I/O device is a video display 124,the processor 101 may use an Advanced Graphics Port (AGP) to communicatewith the display 124. FIG. 1C depicts an embodiment of a computer 100 inwhich the main processor 101 communicates directly with I/O device 131 bvia HyperTransport, Rapid I/O, or InfiniBand. FIG. 1C also depicts anembodiment in which local busses and direct communication are mixed: theprocessor 101 communicates with I/O device 131 b using a localinterconnect bus while communicating with I/O device 131 a directly.

The computing device 100 may support any suitable installation device116, such as a floppy disk drive for receiving floppy disks such as3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive,a DVD-ROM drive, tape drives of various formats, USB device, hard-driveor any other device suitable for installing software and programs suchas any software 121 related to providing an agent, such as a safe agent,as described herein. The computing device 100 may further comprise astorage device 128, such as one or more hard disk drives or redundantarrays of independent disks, for storing an operating system and otherrelated software, and for storing application software programs such asany program related to an agent 121 as described herein. Optionally, anyof the installation devices 116 could also be used as the storage device128. Additionally, the operating system and the software can be run froma bootable medium, for example, a bootable CD, such as KNOPPIX®, abootable CD for GNU/Linux that is available as a GNU/Linux distributionfrom knoppix.net.

Furthermore, the computing device 100 may include a network interface118 to interface to a Local Area Network (LAN), Wide Area Network (WAN)or the Internet through a variety of connections including, but notlimited to, standard telephone lines, LAN or WAN links (e.g., 802.11,T1, T3, 56 kb, X.25), broadband connections (e.g., ISDN, Frame Relay,ATM), wireless connections, or some combination of any or all of theabove. The network interface 118 may comprise a built-in networkadapter, network interface card, PCMCIA network card, card bus networkadapter, wireless network adapter, USB network adapter, modem or anyother device suitable for interfacing the computing device 100 to anytype of network capable of communication and performing the operationsdescribed herein. A wide variety of I/O devices 131 a-131 n may bepresent in the computing device 100. Input devices include keyboards,mice, trackpads, trackballs, microphones, and drawing tablets. Outputdevices include video displays, speakers, inkjet printers, laserprinters, and dye-sublimation printers. The I/O devices 131 may becontrolled by an I/O controller 123 as shown in FIG. 1B. The I/Ocontroller may control one or more I/O devices such as a keyboard 126and a pointing device 127, e.g., a mouse or optical pen. Furthermore, anI/O device may also provide storage 128 and/or an installation medium116 for the computing device 100. In still other embodiments, thecomputing device 100 may provide USB connections to receive handheld USBstorage devices such as the USB Flash Drive line of devices manufacturedby Twintech Industry, Inc. of Los Alamitos, Calif.

In some embodiments, the computing device 100 may comprise or beconnected to multiple display devices 124 a-124 n, which each may be ofthe same or different type and/or form. As such, any of the I/O devices131 a-131 n and/or the I/O controller 123 may comprise any type and/orform of suitable hardware, software, or combination of hardware andsoftware to support, enable or provide for the connection and use ofmultiple display devices 124 a-124 n by the computing device 100. Forexample, the computing device 100 may include any type and/or form ofvideo adapter, video card, driver, and/or library to interface,communicate, connect or otherwise use the display devices 124 a-124 n.In one embodiment, a video adapter may comprise multiple connectors tointerface to multiple display devices 124 a-124 n. In other embodiments,the computing device 100 may include multiple video adapters, with eachvideo adapter connected to one or more of the display devices 124 a-124n. In some embodiments, any portion of the operating system of thecomputing device 100 may be configured for using multiple displays 124a-124 n. In other embodiments, one or more of the display devices 124a-124 n may be provided by one or more other computing devices, such ascomputing devices 100 a and 100 b connected to the computing device 100,for example, via a network. These embodiments may include any type ofsoftware designed and constructed to use another computer's displaydevice as a second display device 124 a for the computing device 100.One ordinarily skilled in the art will recognize and appreciate thevarious ways and embodiments that a computing device 100 may beconfigured to have multiple display devices 124 a-124 n.

In further embodiments, an I/O device 131 may be a bridge 170 betweenthe system bus 150 and an external communication bus, such as a USB bus,an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, aFireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, aGigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, aSuper HIPPI bus, a SerialPlus bus, a SCl/LAMP bus, a FibreChannel bus,or a Serial Attached small computer system interface bus.

A computing device 100 of the sort depicted in FIGS. AugeB and 1Ctypically operate under the control of operating systems, which controlscheduling of tasks and access to system resources. The computing device100 can be running any operating system such as any of the versions ofthe Microsoft® Windows operating systems, the different releases of theUnix and Linux operating systems, any version of the Mac OS® forMacintosh computers, any embedded operating system, any real-timeoperating system, any open source operating system, any proprietaryoperating system, any operating systems for mobile computing devices, orany other operating system capable of running on the computing deviceand performing the operations described herein. Typical operatingsystems include: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000,WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, and WINDOWS XP, all ofwhich are manufactured by Microsoft Corporation of Redmond, Wash.;MacOS, manufactured by Apple Computer of Cupertino, Calif.; OS/2,manufactured by International Business Machines of Armonk, N.Y.; andLinux, a freely-available operating system distributed by Caldera Corp.of Salt Lake City, Utah, or any type and/or form of a Unix operatingsystem, among others.

In other embodiments, the computing device 100 may have differentprocessors, operating systems, and input devices consistent with thedevice. For example, in one embodiment the computer 100 is a Treo 180,270, 1060, 600 or 650 smart phone manufactured by Palm, Inc. In thisembodiment, the Trco smart phone is operated under the control of thePalmOS operating system and includes a stylus input device as well as afive-way navigator device. In some embodiments, the computing device mayinclude any type and form of wireless reading device, such as any Kindledevice manufactured by Amazon.com Inc. of Seattle, Wash. Moreover, thecomputing device 100 can be any workstation, desktop computer, laptop ornotebook computer, server, handheld computer, mobile telephone, anyother computer, or other form of computing or telecommunications devicethat is capable of communication and that has sufficient processor powerand memory capacity to perform the operations described herein.

B. Systems and Methods for Providing Augmented Content

FIG. 2 is a block diagram illustrating one example architecture of theaugmentation server 110 as described above with respect to FIG. 1. Asillustrated, the augmentation server 110 includes a handler 36, alocator 42, an analyzer 45, a generator 48, and a reference database 39.The components 36 through 45 may include a software or firmwareinstruction that can be stored within a tangible computer readablemedium (e.g., magnetic disk drive, optical disk or solid state memorysuch as flash memory, or random-access memory) and executed by aprocessor or equivalent electrical circuits, state machines, microcode,or the like.

A source data file 30 (e.g., a web page) resides on a server (e.g., acontent provider 120) on a network 140 (e.g., the Internet). The handler36 retrieves the source data file 30 for augmentation by theaugmentation server 110. The locator 42 examines the retrieved sourcedata file 30 for comparison to data in the reference database 39. In oneembodiment, the locator 42 analyzes content of the source data file 30for keywords, searches corresponding reference data in the referencedatabase 39, and provides the keywords and the corresponding referencedata to the analyzer 45. In an alternate embodiment, rather thananalyzing the source data file 30 for keywords, the locator 42 retrievesa list of keywords from the reference database 39 and enumerates throughthe textual content of the source data file 30 for matches.

The analyzer 45 creates associations between the keywords and thecorresponding reference data found by the locator 42. The generator 48generates an augmented data file 50 by embedding the associationscreated by the analyzer 45 in the source data file 30. The generator 48embeds associations by generating intelligent tags for the keywords, andaugmenting the keywords with the intelligent tags. In one embodiment, anintelligent tag is an alphabetic and/or numeric string that identifiesits associated keywords, and/or reference data, and optionally includesan unique identification number (hereinafter called the association ID).The generator 48 inserts the generated intelligent tags into the sourcedata file 30 to generate the augmented data file 50. Web pages with theintegrated intelligent tags are called augmented web pages. Keywordswith the integrated intelligent tags are called augmented keywords. Thegenerator 48 also stores the identified keywords and/or the associationsin a database for later references.

The resulting augmented data file 50 is returned to the handler 36 toreside at a Universal Resource Locator (URL) address on the network 140(e.g., at the content provider 120 from which the source data file 30 isretrieved). In one embodiment, the handler 36 also receives requests (orsignals) from client computers 130 indicating user interactions with theaugmented data file, and transmits to the client computers 130 relatedadvertisements for display through layered augmentation. Layeredaugmentation is described in detail below with respect to FIGS. 3Athrough 3C. The handler 36 retrieves the activated keywords (e.g., fromthe requests), and determines one or more relevant advertisements froman advertising database (not shown) that matches the keywords and/or theassociated reference data. In one embodiment, rather than transmittingthe related advertisements, the handler 36 transmits addresses (e.g.,URLs) of the relevant advertisements to the requesting client computer130. The client computer 130 resolves the addresses to retrieve theadvertisements.

The reference database 39 stores reference data such as types ofadvertisements (e.g., television advertisements), categories ofadvertisements (e.g., storage rental, home equity loan), and/orinformation about specific advertisements (e.g., associated keywords,format information, price the advertiser is willing to pay, and URL ofthe advertisement). The reference database 39 may be a relationaldatabase or any other type of database that stores the data, such as aflat file. In one embodiment, the reference database 39 is a web enabledreference database supporting remote calls through the Internet to thereference database 39.

The components of the augmentation server 110 can reside on a singlecomputer system or several computer systems located close by or remotelyfrom each other. For example, the analyzer 45 and the generator 48 mayreside on separate web servers, and the reference database 39 may belocated in a dedicated database server. In addition, any of thecomponents or sub-components may be executed in one or multiple computersystems.

Web pages (or web browsers) can provide additional information toviewers. For example, when a user places a mouse over a link label of ahyperlink, a web browser displays the associated destination URL (e.g.,on a status bar of the web browser). As another example, when a userplaces a pointer over a keyword, the web browser may generate a pop-updialog box, and display relevant information (e.g., an explanation ofthe keyword). The process of providing additional information to webpage viewers is called augmentation.

A keyword (or phrase) often has multiple aspects of related information,each having multiple aspects of related information. For example, thekey phrase “digital camera” is related to its history, underlyingtechnology, and available products and services. A specific productrelated to digital camera has related information such as productdescription, customer review, and competing products. Usually only oneaspect of the related information is provided through augmentation dueto limited display space.

Multiple aspects of related information can be arranged and provided toviewers through layered augmentation. Each aspect of related informationcan be assigned to one specific layer of the layered augmentation.Viewers can navigate among the multiple aspects of related informationby accessing the different layers of the layered augmentation withoutleaving the web page. For example, the augmented information can bedisplayed in a multi-layered dialog box. A viewer can navigate amongdifferent layers by selecting associated tabs displayed in the dialogbox in which each tab is associated with a layer. Alternatively, themultiple layers may be stacked in a manner similar to windows inMicrosoft Windows™ Operating System. The stacked layers may be arrangedin a horizontal, vertical, or cascade style, showing a small exposedportion of each layer, such as a title area or a corner area. Navigationbetween each layer in the stack can be through selection of that smallexposed portion of the layer within the stack. The process of providingadditional information (or resources) through multi-layered dialog boxand the multi-layered dialog box are collectively called layeredaugmentation.

FIGS. 3A through 3C are flowcharts collectively illustrating an exampleprocess (or method) for augmenting web pages and providing viewers ofaugmented web pages with related advertisements through layeredaugmentation. In one embodiment, the illustrated method (or either ofits sub-methods 300, 350, and 390) is implemented in a computingenvironment such as the computing environment 100. One or more portionsof the method may be implemented in embodiments of hardware and/orsoftware or combinations thereof

By way of example, the illustrated method may be embodied throughinstructions for performing the actions described herein and suchinstrumentations can be stored within a tangible computer readablemedium and are executable by a processor. Alternatively (oradditionally), the illustrated method may be implemented in modules likethose in the augmentation server 110 described above with respect toFIG. 2 and/or other entities such as the content providers 120 and/orthe client computers 130. Furthermore, those of skill in the art willrecognize that other embodiments can perform the steps of theillustrated method in different order. Moreover, other embodiments caninclude different and/or additional steps than the ones described here.

FIG. 3A illustrates an example process (or method) 300 for augmentingweb pages. As illustrated in FIG. 3A with reference to components of theaugmentation server 110 in FIG. 2, at an appropriate starting terminus10, the method 300 begins by reading a piece of structured data from asource data file 30 at a block 13 (e.g., through the handler 36). Thesource data file 30 may be one designated by an input uniform resourcelocator (URL) address or by any suitable means to designate a resource.Upon opening the source data file 30, the method 300 may optionallyidentify the type of content on the page with a content identifier suchas a MIME header (e.g., through the locator 42). In one embodiment ofthe invention, the method 300 merely searches for the presence of apiece of reference data (e.g., through the locator 42), either informedby the content identifier or by simply searching an occurrence of apiece of well structured data (e.g., a keyword) within the source datafile. In addition, once the source data file 30 is open, the method 300has its content available for comparison to reference data in thereference database 39. Other methods and examples to read a piece ofstructured data from the source data file are described in U.S.application Ser. No. 12/033,539, filed on Feb. 19, 2008, the content ofwhich is incorporated by reference in its entirety.

At a block 16, the method 300 locates one or multiple pieces ofreference data in the reference database 39 corresponding to the pieceof structured data read in the source data file 30 (e.g., through thelocator 42). In one embodiment, the locator 42 searches for referencedata in the reference database 39 that match the piece of structureddata by making function calls to the reference database 39. In oneembodiment, the structured data are keywords, and the reference dataalso contain keywords.

Keywords are a facile and efficient means of generating layeredaugmentation. In addition to or instead of using keywords, oneembodiment uses a “fuzzy expert” or a neural network analysis of thesource data file 30, such as by a natural language search of the sourcedata file 30 to generate a distinct identifier for the content in thesource data file 30. One advantage of a natural language search is theability to better place content in context making links morecontextually appropriate, for instance, security might relate tosecurity of a physical plant such as security of a residence in onesource data file 30 in one context and security of a website in another.In one embodiment, the method 300 determines a context of the keywordsand/or the source data file 30 based on statistical modeling (e.g.,through the locator 42). For example, a context can be assigned apre-defined set of terms which acts as a fingerprint for the context(hereinafter called context fingerprint). The locator 42 can compare thecontext fingerprints associated with a collection of contexts with theterms within the source data file 30 to determine a percentage match foreach context in the collection. Where a high percentage match isachieved (e.g., exceeding a pre-defined percentage match threshold), thelocator 42 determines that the associated context is the context for thesource data file 30. Alternatively or in conjunction, the locator 42 maydetermine the context associated with the highest percentage match asthe context for the source data file 30. The context can be used tolocate corresponding reference data and/or related resources.

At a block 19, the method 300 generates an association to the piece ofstructured data based upon the located matching reference data (e.g.,through the analyzer 45). In one embodiment, a piece of reference dataincludes an identifier such as a keyword, a context, a uniqueidentification number, and/or associated URL address(es) of intendeddestination resource(s) based upon the occurrence of the correspondingkeywords in the source data file 30. Generating an association means toassociate the piece of structured data located in the source data file30 with the located reference data in the reference database 39. Thegenerated association might optionally include additional identificationcodes such as an association ID. The method 300 then augments theoriginal source data file 30 with the generated association at a block22 to generate an augmented data file 50 (e.g., through the generator48).

In one embodiment, the method 300 expresses the association asintelligent tags (e.g., through the generator 48). The method 300generates intelligent tags for the located keywords and tags thekeywords with the generated intelligent tags. The intelligent tagscontain information about the associated keywords such as the keywordand related context, and information about the associated reference datasuch as IDs that uniquely identify the reference data in the referencedatabase 39. For example, the intelligent tags may contain requirement(or preference) information about advertisements (or other types ofresources) to be associated with the keyword, such as types ofadvertisements and a minimum advertisement fee. In one embodiment, theintelligent tags also format the augmented keywords differently than theother textual content in the augmented web pages. Having generated theaugmented data file 50, the method 300 then terminates at a block 25.

In one embodiment, the augmentation server 110 (or the content providers120) also augments the web pages by including computer code (hereinaftercalled client code) to monitor and report viewers' interactions with theaugmented keywords. The computer code can be in any computer language,such as JavaScript. Additional functions of the client code aredescribed in detail below with respect to FIGS. 3B and 3C.

The augmented data file 50 can be delivered (or transmitted) to clientcomputers 130 for display through a web browser to viewers to providerelated resources through layered augmentation. The delivery of theaugmented data file 50 and the process to provide layered augmentationis described in detail below with respect to FIGS. 3B and 3C. Forpurpose of illustration, the method is described in terms of web pagesaugmented with advertisements, even though the disclosed embodimentsapply to other types of augmented data file and resources.

Referring now to FIG. 3B, a flowchart illustrating an example process(or method) 350 for providing layered augmentation to viewers ofaugmented web pages. As illustrated, the method 350 transmits 355 anaugmented web page to a client computer. For example, a user of theclient computer 130 may enter the URL of an augmented web page (or thecorresponding original web page) in the address bar of a conventionalweb browser (e.g., Microsoft Internet Explorer™, Mozilla Firefox™, orApple Safari™). The web browser of the client computer 130 (hereinaftercalled the client web browser) resolves the URL and transmits a requestfor the web page to a corresponding content provider. Responding to therequest, the content provider transmits 355 the augmented web page tothe client web browser for display. In one embodiment, the client webbrowser displays augmented keywords in a double underline style and/orin a color distinctive from text that is not augmented in the augmentedweb page.

The method 350 receives 360 an intelligent tag request from the clientcomputer 130. As described above with respect to FIG. 3A, the augmentedweb page contains client code that monitors user interactions withaugmented keywords. In one embodiment, if the user moves a pointer(e.g., a pointer controlled by a mouse, navigation button, or touchpad)over (a mouse-over) an augmented keyword (the activated keyword), theclient code (which may be integrated with the web browser, for example,as a plug-in applet) generates an intelligent tag request and transmitsthe request to the augmentation server 110. The request indicates themouse-over user activity to the augmentation server 110. The request maycontain information that uniquely identifies the activated keyword(e.g., an association ID), and/or other information such as theactivated keyword itself.

The method 350 determines 365 advertisements relevant to the activatedkeyword for the received request based on the keyword and/or theassociated reference data. In one embodiment, the augmentation server110 extracts the keyword and/or related context from the request,retrieves the associated reference data from the reference database 39,and determines 365 the relevant advertisements by searching in anadvertisement database using the keyword and/or requirements set forthin the associated reference data (e.g., advertisement category, context,fee requirements, etc.).

In one embodiment, the method 350 determines 365 the advertisements thatmatch the best (e.g., matching the activated keyword and/or satisfiesthe most number of reference requirements) as the relevantadvertisements. In another embodiment, the method 350 determines 365relevant advertisements based on a context of the augmented web pageand/or the activated keyword. For example, for a key phrase “digitalcamera” in an article about digital camera, the method 350 maydetermines the following resources as relevant: a product review of adigital camera in CNET.com, a collection of user reviews at Buy.com, anda selection of similar digital cameras. The context can be determinedwhen the activated keyword is identified in method 300.

In one embodiment, the method 350 determines a sequence for the relatedadvertisements. The top advertisement in the sequence (also called thedefault advertisement or the primary advertisement) is the advertisementbeing displayed on the top layer of the layered augmentation. The lowerranked advertisements (also called secondary advertisements) are madeavailable on lower layers of the layered augmentation. In oneembodiment, the method 350 uses a bidding system to determine relatedadvertisements sequence. For example, for a key phrase “digital camera,”there may be multiple related advertisements (e.g., advertisements fordifferent brands or models of digital cameras), each having a bid (orbudget or cost) for the key phrase. The method 350 may determine asequence of the advertisements based on their bids, the one with thehighest bid ranked the highest and so on.

In another embodiment, the method 350 may determine the sequence ofmultiple advertisements based on factors other than bidding prices. Forexample, the method may consider factors such as relationships among themultiple advertisements (e.g., prioritizing video advertisements overtext ones), prior user interactions with the advertisements (e.g.,prioritizing advertisements with higher interacting rate), and contextsof the augmented keyword (e.g., prioritizing advertisements fromretailers or service providers having branches near a geographicalcontext of the keyword and/or the augmented web page, or geographiclocations of a substantial portion of viewers of the web page).

Further, specific sequences may be set for specific keywords and/orparties (e.g., content providers, advertisers, users). For example, ifthe keyword(s) is a music artist (or band, album) name, the method 350may make available his songs (e.g., playback through an embedded musicplayer) on the top layer and other resources on lower layers. As anotherexample, if the keyword(s) is a location name (e.g., YellowstoneNational Park), the method 350 may make available the relevant map(e.g., MapQuest™ Map) on the top layer. As noted above, the resourcesmade available through the layered augmentation need not to beadvertisements and can be related contents such as related articles,videos, images, music, to name only a few. For example, a contentprovider may specify that the layered augmentations in its web pagesmake available a set of links to its other relevant web pages (e.g.,within the same website) where the keyword(s) being augmented iscross-indexed.

In one embodiment, viewers can set their preferences to determine apreferred sequence for the layered augmentation. For example, a viewermay prefer video advertisements while another may disfavor them (e.g.,due to bandwidth constrains at receiving device). As a result, themethod 350 may place video advertisements higher on a sequence for thefirst viewer, while not consider video advertisements for augmentationfor the second viewer. Viewer preferences can be stored in a databasesuch as the reference database 39 along with other viewer related data(e.g., profile data).

The method 350 transmits 370 the relevant advertisements to the clientcomputer 130 for display. In one embodiment, the method 350 retrievesthe advertisements from an advertisement database, and transmits 370them to the client web browser (or the client computer) for display.Alternatively, the method 350 may transmit references of theadvertisements (e.g., their URLs) to the client web browser forretrieval.

In one embodiment, the method 350 generates computer code (hereinaftercalled the advertisement code) to facilitate user interaction with theadvertisements. Similar to the client code, the advertisement code canbe in any computer language, such as JavaScript. The advertisement codemay display the relevant advertisements in a multi-layered dialog box(or popup box) when the viewer moves a pointer over the activatedkeyword. The method 350 transmits the generated advertisement code alongwith the related advertisements to the client web browser. In oneembodiment, the advertisement code is a part of the client code, and isintegrated in the augmented web page when the page is generated

The client web browser displays 375 the relevant advertisements in alayered dialog box proximate to the activated keywords (or the positionwhere the mouse-over is occurring) as an in-page overlay. In oneembodiment, the client web browser utilizes the advertisement code todisplay the advertisements in a multi-layered dialog box. Theadvertisements are displayed according to their sequence. In oneembodiment, only the top advertisement is displayed and the lower rankedadvertisements are represented by selectable tabs. An example process ofthe operation of the advertisement code and the client code is describedin detail below with respect to FIG. 3C.

Referring now to FIG. 3C, a flowchart illustrating an example process(or method) 390 of the client code and/or the advertisement code. Asillustrated, the method 390 determines whether a pointer is positionedover an augmented keyword (the activated keyword), and if so, sets 392the primary advertisement as the active advertisement, and displays 394the active advertisement in a multi-layered dialog box overlaying theaugmented web page in a position proximate to the activated keyword orthe mouse-over. The multi-layered dialog box also displays multipleselectable (e.g., clickable) tabs representing the lower layers. Theviewer can select a tab to request the multi-layered dialog box todisplay the corresponding layer. If the user selected a tab, the method390 sets 396 the advertisement corresponding to the selected layer asthe active advertisement and displays 394 it in place of the previouslydisplayed advertisement.

The viewer can also interact with the currently displayed advertisementby selecting the advertisement. If the viewer selects the advertisement,the method 390 responds 398 to the user selection based on the nature ofthe user selection and the configuration of the advertisement. Forexample, if the user clicks on the active advertisement, the method 390redirects the web browser to a web page related to the activeadvertisement. Alternatively, if the user drags a scrollbar displayed onthe dialog box, the method displays different portions of the activeadvertisement as the user drags along the scrollbar. In one embodiment,if the viewer moves the pointer away from the activated keyword and/orthe multi-layered dialog box for an extended period of time, the method390 hides the dialog box.

Referring back to FIG. 3B, in one embodiment, rather than displayingmultiple advertisements, the method 350 displays multiple aspects (orportions) of the same advertisement in the multi-layered dialog box. Forexample, the multi-layered dialog box may display an image and briefdescription of a product, and present two tabs, one for user reviews andthe other for playback of a television advertisement of the product. Theviewer may interact with the advertisement through the multi-layereddialog box without having to navigate away from and otherwise leave thecurrent web page the viewer is interacting with in the web browser. Forexample, if the advertisement contains video, the multi-layered dialogbox may overlay the video with video controls (e.g., forward, rewind,play/pause, volume, etc.). The multi-layered dialog box may also providefunctional resources such as web searches, enabling viewers to conductweb searches and/or review search results without leaving the augmentedweb page.

The method 350 tracks 380 the received requests, the advertisementsdisplays, and/or the user's interactions with the advertisements. Theseactivities may be logged in a database (e.g., the reference database 39)or reported to another device or person (e.g., via electronic mail).

The methods described above with respect to FIGS. 3A through 3C areillustrated below in an example together with accompanying screenshotsin FIGS. 4A through 4E. Initially, the augmentation server 110 retrievesa web page 400 for augmentation. The web page 400 may contain textualcontent of any subject. FIG. 4A shows an example of the web page 400 asdisplayed in Microsoft Internet Explorer™. As shown in FIG. 4A, the webpage 400 is retrieved from website www.computing.net and contains aparagraph about computer virus.

The augmentation server 110 reads 13 the web page 400 for keywords. Theaugmentation server 110 identifies the keyword “security” 410 forlayered augmentation. The augmentation server 110 locates 16 a piece ofreference data matching the keyword “security” 410 and determines acontext of computer security for the keyword 410. The piece of referencedata includes an advertisement category for computer security services.The augmentation server 110 generates 19 an association of the keyword“security” 410 and the located piece of reference data.

The augmentation server 110 augments 22 the web page 400 by generatingan intelligent tag encoding the generated association, and integratingthe intelligent tag in an augmented web page 450. The augmentationserver 110 also includes in the augmented web page 450 JavaScript code(client code) that captures user interactions with the augmented keyword410.

A web browser running on a client computer 130 retrieves the augmentedweb page 450 and displays it to a user (e.g., responding to the userentering an URL of the web page 400 or 450 in the address bar of the webbrowser). FIG. 4B illustrates a screenshot of the augmented web page 450as displayed on an Internet Explorer™ web browser after it is retrievedby the browser. It is noted that in FIG. 4B the augmented keyword 410 isdisplayed in a double underline style to distinguish from conventionalhyperlinks that are single underlined.

Subsequently, the user may move a pointer (e.g., controlled by a mouse,stylus, or touchpad) over the double underlined augmented keyword 410(the activated augmented keyword). This user action is also referred toas a mouse-over. Detecting the mouse-over, the embedded JavaScript code(the client code) in the augmented web page 450 (or the web browser)generates an intelligent tag request that uniquely identifies theactivated augmented keyword 410 and/or the related context, andtransmits the request to the augmentation server 110. The augmentationserver 110 receives 360 the request, retrieves stored association of thekeyword 410, and determines 365 relevant advertisements by searching foradvertisements corresponding to the keyword 410 and/or the relatedcontext in an advertising database. In the present example, theaugmentation server 110 determines 365 that an advertisement for Ciscosecurity center is the relevant advertisement associated with theaugmented keyword 410.

The augmentation server 110 determines a sequence of various parts ofthe Cisco advertisement and/or other relevant advertisements. In thepresent example, the augmentation server 110 determines that adescription of the Cisco security center ranks top in the sequence,followed by its customer reviews, and a list of competing services.

The augmentation server 110 transmits 370 the related advertisement(s)back to the web browser for display. The augmentation server 110 alsotransmits JavaScript code (advertisement code) that enables layeredrepresentation of the transmitted advertisements.

The web browser (or the advertisement code) displays 375 the receivedadvertisement(s) as an overlay in a multi-layered dialog box inproximity to the keyword 410 or the location where the mouse-overoccurred. As illustrated in FIG. 4C, the user has moved a mouse pointerover the keyword 410. As a result, the web browser receivesadvertisements related to the keyword “security” 410 and displays themin a multi-layered dialog box 460 proximate to the pointer.

As illustrated, the multi-layered dialog box 460 displays anadvertisement about CISCO security center. On the bottom of themulti-layered dialog box 460 are two tabs labeled “Click to viewcustomer review” and “Click to view alternative services,” respectively.Note that this is consistent with the sequence of the advertisements(and/or advertisement portions) determined by the augmentation server110. The user can navigate the advertisements within the multi-layereddialog box 460 by clicking the labeled tabs. The user can also visit thecorresponding advertiser's web page by clicking the advertisement. Whilethe user navigates within the multi-layered dialog box 460, theaugmented web page 450 remains as the current web page displayed in theclient web browser. The user can quickly resume browsing the rest of theaugmented web page 450.

As illustrated in FIG. 4D, when the user clicks (or mouse-over) the tablabeled “Click to view customer review,” the multi-layered dialog box460 displays customer reviews for Cisco security center. It is notedthat the label on the tab representing customer review changes to “Clickto hide customer review.” The user can click the tab to resume viewingthe previous advertisement for Cisco security center.

As illustrated in FIG. 4E, when the user clicks the Cisco securitycenter advertisement, the advertisement code redirects the client webbrowser to the advertiser's web page, in this case a web page related toCisco security center.

C. Systems and Methods of an Ad Server Platform

Referring now to FIG. 5A, an embodiment of an environment and systemsfor providing a plurality of augmented content and related services. Inbrief overview, an ad server platform 110′ delivers a plurality ofservices, such an in-text services 510, interest ads 512 and relatedcontent 514 services. The ad server platform 110′ may include a contextengine 502, an interested engine 504, a campaign selection engine 506and/or an advert resolution engine. The ad server may include or furtherinclude any embodiments of the augmentation server 110 described herein.

The ad server platform 110′ may comprise any combination of modules,applications, programs, libraries, scripts or any other form ofexecutable instructions executing on one or more servers. The ad serverplatform 110′ may provide services directed to advertisers to reach aplurality of users across a plurality of publisher websites, such ascontent providers 120. The services of the ad server platform 110′ maycombine the precise word targeting with delivery of rich media and videocontent. The ad server platform 110′ may provide services directed topublishers to received additional advertising revenue and real-estatewith adding more clutter on their web-sites. The ad server platformprovides a user controlled environment, allowed the user to viewaugmented content, such as advertising, only when these choose to viamouse interaction over a relevant word of interest—a keyword. As such,an ad impression may be pre-qualified in that a user must choose to viewthe ad by moving their mouse over or clicking on a word or phrase ofinterest. This may be referred to as user-initiation impressions.

The ad server platform may provide in-text advertising services 510.In-text services reads web pages and hooks words and word-phrasesdynamically and in real time. The hooked words may be linked orhyperlinked to augmented content in any manner. In one embodiments, thewords are double underlined but any type of indicator may be used suchas a single underline or an icon. In some embodiments, the code forin-text services is installed by publishers into their sites and doesnot require any additional code, adware or spyware to be downloaded oruploaded by a user. When a user mouses over or clicks on hooked (e.g.,double underlined) word or phrase, the code display a user interfaceoverlay, sometimes referred to as a tooltip, on the web page and nearthe hooked word or phrase.

The ad server platform may provide interest ad services 512. Theinterest ad services identifies words of interest within a web page todeliver advertisements that are related to these words of interest. Theinterest ad service may identify the words on the page to analyze thosewords to determine which words are core or central to that page. Theseset of core word are keywords to identify one or more ad campaignsrelevant to those keywords and the user's interests. This may minimizewasted impressions and deliver and advertising experience that relatesmore directly to the user's interest.

The ad server platform may provide related content services 514. Therelated content services may provide, create or generate an automatedlinking system that conveniently delivers relevant additional contentfrom the same or different publishes in the form of videos, articles andinformation. The related content services may read web pages and hookwords and word-phrases dynamically and in real time. The hooked wordsmay point or navigate the user through content related to the hookedwords available through a website, network or portal. For example, therelated content service may link a word on the page to re-circulate theuser through additional content, such as other web pages, of thepublisher. In some embodiments, the related content service mayautomatically mirror the hyperlink style of a publisher's editoriallinks or already provided hyperlinks. The related content services maygenerate or add an icon, such as search icon, that indicates thataugmented content is returned or available.

In further details, the ad server platform may comprise one or morecontext engines 502. The context engine may comprise any type and formof executable instructions executing on a device, such as a server. Thecontext engine may comprise any functions, logic or operations foranalyzing content of a web page. The context engine may use any type andform of semantics based algorithm to determine the meaning of thekeyword relevant to the content of the page, the user, the web-site, thepublisher and/or the campaign. The context engine may determine theintended structure and meaning of words, phrases, sentences or text inthe content of the page. The context engine may analyze the text in thecontent to determine any characters, text, strings, words, terms and/orphrases, or any combinations thereof, that match or correspond to anycharacters, text, strings, words, terms and/or phrases, or anycombinations thereof of any one or more campaigns. The context enginemay analyze the content of the page for keywords from campaigns targetedat the web-site, publisher or content provider of the page. The contextengine may determine any type of metrics on the content of the web pageand of keywords of targeted campaigns of the web page. The contextengine may use any type and form of algorithm to determine a keywordrelevancy weight such as by location of the keyword, the frequency ofthe keywords and the length of the keyword. For example, for locationweighting, those keywords that appear earlier in the content may beconsidered more relevant than those that appear later. For frequencyrelevancy, the more a keyword is repeated within the content, the morerelevant the keyword may be considered. For length relevancy, the morewords in a keywords the less generic the keyword may be and the morerelevant the keyword may be considered.

The ad server platform may comprise one or more interest engines 504.The interest engine may comprise any type and form of executableinstructions executing on a device, such as a server. The interestengine may comprise any functions, logic or operations for tracking andstoring user information and/or behavior to a behavioral profile. Theinterest engine may track and store the user's location, operatingsystem and/or browser. The interest engine may track a predeterminednumber of keywords a user has seen over a certain time period. Theinterest engine may track a predetermined number of relevant terms auser has viewed over a certain time period. The interest engine maytrack the a predetermined number of searches for which a user clicked asearch result and landed on the content providers web-site or web. Theinterest engine may store the recent search terms and/or recently viewedterms into a behavioral profile for the user. The ad server platform,context engine and/or interest engine may change the weighting ofkeywords in content of a page responsive to any information stored inany behavioral profiles. For example, The ad server platform, contextengine and/or interest engine may use a multiplier to upweight ordownweight one or more keywords.

The ad server platform may comprise one or more campaign selectionengines 506. The campaign selection engine may comprise any type andform of executable instructions executing on a device, such as a server.The campaign selection engine may comprise any functions, logic oroperations for selecting or matching a campaign to a set of one or morekeywords identified and/or weights for content of a page. The campaignselection engine may identify and select a campaign from a plurality ofcampaigns. The campaign selection engine may identify and select a firstset of campaigns from a plurality of campaigns that meet a firstthreshold or criteria. From the first set of campaigns, the campaignselection engine may order or rank these campaigns using any type andform of algorithms. In some embodiments, the campaign selection enginemay provide a campaign-level relevance of the keywords. The campaignselection engine may determine a relevance number or weighting for eachcampaign relative to the weighted keywords. In some embodiments, eachcampaign may provide a priority to keywords, web-pages or publishers. Insome embodiments, each campaign may provide a relevance weighting tokeywords, web-pages or publishers. The campaign selection engine mayalso comprise any set of one or more rules or restrictions for eitherchanging the ranking, keeping a campaign or removing the campaign. Basedon applying these rules and/or restrictions, the campaign selectionengine selects from the first set of one or more companies a second setof one or more campaigns to use for augmenting the identified keywordson the web-page.

The ad server platform may comprise one or more advert resolutionengines 508. The advert resolution engine may comprise any type and formof executable instructions executing on a device, such as a server. Theadvert resolution engine may comprise any functions, logic or operationsfor resolving the advertisement to use for a hook. For eachadvertisement, the advert resolution engine may determine whether theadvertisement is a backfill or to be obtained from a backfill network.If the advertisement is backfill, the advert resolution engine calls orcommunicates with the backfill provider's servers. For example, theadvert resolution engine may include one or more handlers designed andconstructed to communicate with a particular backfill provider. When anadvertisement is received from the backfill provider or when theadvertisement if not coming from a backfill, the advert resolutionengine may perform any type and form of filtering on the advertisement,such as for making sure the ad meets any rules or restrictions forcontent. The advert resolution engine includes a placer for selecting aninstance of a keyword to hook with the advertisement. When the advertresolution engine has checked for backfill, filters the advertisementand selected an instance to hook for all the intended advertisements,the advert resolution engine may hook the keywords. The advertresolution engine may perform these operations for content other thanadvertisements, such as other types of augmented content.

Referring now to FIGS. 5B through 5H, diagrams of embodiments of thefunctionality and operations of the ad server platform are depicted.FIG. 5 b depicts an embodiment of high level overview of the processfrom the client perspective. FIG. 5C depicts an embodiment of contextualtargeting. FIG. 5D depicts an embodiment of keyword relevancy weighting.FIG. 5E depicts an embodiment of behavioral targeting. FIG. 5F depicts afurther embodiment of behavioral targeting. FIG. 5G depicts anembodiment of further weighting based on behavioral targeting. FIG. 5Hdepicts and embodiment of campaign selection.

Referring to FIG. 5A, at step 502, a user on a client 120 requests apage from a publisher, such as a web page of a content provider 120. Atstep 504, the client receives the page and the browser loads the page.The user may start browsing the web page. At step 506, an agent on thepage, such as a script starts an analysis in the background. The agentmay be triggered upon loading of the web page or start the analysis uponreceipt and/or loading of the web page. The agent may communicate withthe ad server platform to perform any of the services of in-textadvertising, related content or interest ads. For example, the agent maysend content from the page for the ad server platform to analyze. In thebackground of the user viewing or browsing the web page, the ad serverplatform may analyze the page, find relevant campaigns filter campaignsand generate a response to the agent for hooking the keywords andidentifying or delivering the augmented content. The ad server platformmay not analyze pages based on filtering certain URLs. The ad serverplatform may analyze the content received from the agent, perform any ofthe services described herein and send the keywords to hook and thecorresponding augmented content, such as advertisements from a campaign.At step 508, the analysis is completed and the user sees links tokeywords, such as double underlined keywords. As described herein, theuser may mouse over or click the hooked keyword and have the augmentedcontent displayed.

Referring now to FIG. 5C, an embodiment of contextual targeting isdepicted. This contextual targeted may be performed by the ad serverplatform and performed in the background while the page is being loadedand browsed/viewed by the user. The ad server platform receives pagecontent from the client, such as via an agent. The ad server platformanalyzes the page to match keywords to campaigns targeted to theweb-site, page or URL. In some embodiments, the ad server platform findsall campaigns targeted to this site, finds all keywords in thosecampaigns and forms or generates a site keyword list for this site. Thead server platform may match the keywords from the site keyword list tokeywords in the content from the page. The ad server platform may assigneach matching keyword a relevancy weight.

Referring now to FIG. 5D, an embodiment of assigning a relevancy weightto each keyword to provide contextual targeting is depicted. The adserver platform may provide a relevancy weight to each keyword of thesite keyword list matching content of the web page. The ad serverplatform may use any type and form of metrics or combinations of metricsto determine a relevancy weight. In some embodiments, the ad serverplatform uses a location, frequency and/or length metric to assign arelevancy weight to the matching keyword. The location relevancy weightmay comprise an indicator or multiplier to those keywords that appearnear the beginning or top of the web page relevant to those keywordsthat appear near the end of bottom of the web page. The frequencyrelevancy weight may comprise an indicator or multiplier to thosekeywords that appear more times on the same page or content than otherkeywords. The length relevancy weight may comprise an indicator ormultiplier to those keywords that have more words in the keywords thansingle keyword or keywords with less words.

Each type of metric relevancy weight may be weighted the same ordifferently. Each metric relevancy weight may have it owns multiplier orfactor that scales the weight for the keyword up or down according tothe relevancy. The keyword may be up weighted and/or down weighted oneor more times by each of the metric relevancy weights. A keywordrelevancy weight may be up weighted by one metric relevancy weight whiledownloaded by another relevancy weight. For example, a keyword may berepeated several times and be upweighted or have a high multiplier basedon the frequency relevancy weight while only found and repeated near theend of the page for a down weighting or low multiplier from the locationrelevancy weight. In some embodiments, a keyword may get a low relevancyweighting from each of the metric relevancy weightings. In someembodiments, a keyword may get a high relevancy weighting from each ofthe metric relevancy weightings. In some embodiments, a keyword may geta combination of low and high relevancy weightings from differentrelevancy weightings.

Referring now to FIG. 5E, an embodiment of applying behavioral targetingis depicted. The ad server platform may identify, track and storeformation about a user's behavior in a behavioral profile. Thebehavioral profile may comprise a profile for one user or a plurality ofusers. Each of the user's profile data may be identified, tracked andmanaged via unique user identifiers. In some embodiments, the ad serverplatform may track a predetermined number of search terms, such as 5,that the user last searched. In some embodiments, the ad server platformmay track a predetermined number of search terms for each search engine,such as the Google search engine, Microsoft Bing search engine, Yahoosearch or Ask search engine. In some embodiments, the ad server platformmay track a predetermined number of search terms for each search engineacross a combination of search engines. In some embodiments, the adserver platform tracks and stores those search terms for which the userclicked a search result. In some embodiments, the ad server platformtracks and stores those search terms for which the user clicked a searchresult. In some embodiments, the ad server platform tracks and storesthose search terms for which the user clicked a search result and landedon a web page of a predetermined content provider or publisher.

Referring to FIG. 5F, a further embodiment of behavioral targeting isdepicted. The ad server platform may track and store in the behavioralprofile of a user a history of terms the user has seen over apredetermined time period. In some embodiments, the ad server platformtracks terms has a user has viewed on a web page. In some embodiments,the ad server platform tracks terms the user has selected from a searchor interacted with during the user's viewing history. In someembodiments, the ad server platform tracks terms of one or more searchresults from which the user has clicked through. In some embodiments,the ad server platform tracks viewed terms over a predetermined timeperiod. In some embodiments, the ad server platform tracks viewed termsover a start of a behavioral profile of the user to current time.

The ad server platform may use any of the search terms and/or viewedterms from the behavioral profile to make a change to the relevancyweightings of the matching keywords. Those matching keywords that theuse has searched or viewed previously will have their relevancyweightings increased or upweighted via a behavioral targetingmultiplier. In some embodiments, the ad server platform may use acombination of recently searched and viewed terms to apply a multiplierto each matching keyword. The ad server platform may use any temporalthreshold to determine which search terms and/or viewed terms to use fordetermining a multiplier to the relevancy weightings of the matchingkeywords. The ad platform may apply higher behavioral targetingmultipliers to those keywords that were recently viewed and/or recentlysearch within a predetermined time history. The ad platform may apply noor lower behavioral targeting multipliers to those keywords that werenot recently viewed and/or not recently search within the predeterminedtime history.

As a result of using behavioral profile data and behavioral targetingmultipliers, as depicted in FIG. 5G, the ad server platform modifies therelevancy of the matching keywords from the site keyword list. Thematching keywords are assigned a first relevancy weighting from thecontextual targeting and are modified or changed to a second relevancyweighting from the behavioral targeting. In some embodiments, the adserver platform maintains both the contextual targeting relevancyweightings and the behavioral targeting relevancy weighting for eachmatching keyword. In some embodiments, the ad server platform maintainsa single relevancy weighting keyword comprising the behavioral targetingmultipliers (up weighting or down weighting) to the relevancy weightingapplied by the contextual targeting.

Referring to FIG. 5H, an embodiment of campaign selection is depicted.In some embodiments, the results of contextual and/or behavioraltargeting are used as input to the campaign selection engine. The adserver platform may use the relevancy weightings of the matchingkeywords from the site keyword list to determine which campaigns may beapplicable to these matching keywords. Those campaigns not havingkeywords corresponding to any of the matching keywords may be droppedfrom consideration. In some embodiments, those campaigns not having anumber of keywords corresponding to the matching keywords within apredetermined threshold may be dropped from consideration. In someembodiments, those campaigns having one or more keywords correspondingto a predetermined number of the top relevancy weighted keywords may beidentified for consideration.

The ad server platform may order the list of campaigns underconsideration using any type and form of algorithm. For example, the adserver platform may rank the campaigns based on having matching keywordswith the highest combined relevancy weightings. the ad server platformmay rank the campaigns based on having the highest number of matchingkeywords. The ad server platform may rank the campaigns based on acombination of the highest combined relevancy weightings and the highestnumber of matching keywords. The ad server platform may also ordercampaigns based on any type of priorities assigned to the campaigns.Some campaigns may have a high order of priority to deliver or servethan other campaigns.

The ad server platform may selected the campaigns to deliver from theordered or ranked list of campaigns. The ad server platform may furtherrestrict the selection based on any rules or policies of the ad serverplatform, the publisher or the campaign. For example, the campaign orpublisher may have rules restricting the serving of a campaign directedto certain users, times of days, locations, browsers, or content. Oncethe selection of the one or more campaigns is made, the ad serverplatform generates a list of campaign keywords to hook and transmitsthese keywords to the agent of the client. The ad server platform mayprovide to the agent information on the publisher, campaign,tooltip/user interface overlay and/or augmented content with orcorresponding to the keyword.

Referring now to FIGS. 5I, 5J and 5K, embodiments of systems and methodsfor delivering augmented content are depicted. FIG. 5I depicts anembodiment of a system for analyzing content of a page to determinekeywords to augment for one or more campaigns. FIG. 5J depicts anembodiment of augmented content delivered to a web page of a client.FIG. 5 k depicts embodiments of a method for analyzing and hookingkeywords on a web page of a client.

In brief overview of FIG. 5I, an embodiment of a system for augmentedkeywords on a web page is depicted. A client 130 communicates with oneor more content providers 120, such as publishers, via network(s) 140.The client 120 may include a browser that receives, loads and displaycontent in the form of web page or pages 517 from the one or morecontents providers. The client 130 also communicates with theaugmentation server or ad server 110′. The page 517 being loaded orloaded by the browser comprises an agent 520. The agent 520 maycommunication page content 519 to the server 110, 110′ for analysis andreceived from the server 110, 110′ keywords, corresponding campaignsand/or augmented content. The keyword matcher 522 of server 110, 110′may perform keyword matching, such as using site keyword list, on thepage content 519 received from the agent 520. The keyword ranker 524ranks the keywords to provide ranked keywords 528. The campaignselection engine 506 selects campaigns 526 based on the ranked keywords528.

In further detail, the browser 515 may comprise any type and form ofexecutable instructions for accessing information resources via anetwork 140 such as the Internet. The browser may include any user agentor software for retrieving, presenting, accessing and/or traversinginformation resources or documents on the world wide web or a network140. The browser may include any functionality for loading, running,processing and/or displaying on a computer screen information written inHTML, XML, javascript, java, flash or any other language or a scriptused for web pages. Browser may include any functionality for displayingany type and form of content or features presented by web page ortransmitted content provider 120. Browser may include any functionalityfor enabling a user to interact or interface with a web page. Browsermay provide functionality for displaying advertisement informationwithin a web page presented or displayed on a computer screen of clientcomputer 130. In some embodiments, a browser is any version of InternetExplorer web browser manufactured by Microsoft Corp. In otherembodiments, the browser is any version of the Chrome web browsermanufactured by Google Inc. In other embodiments, the browser is anyversion of Firefox web browser distributed by the Mozilla Foundation. Infurther embodiments, the browser is any version of the Opera browser byOpera Software ASA.

The page 517 may include any type and form of content processable by anyembodiment of the browser 515. The page may be stored on any number ofservers, such as content providers 120 and may be accessed and/or loadedby any web browser, such as browser 515. The page may be a web page. Thepage be a document, The page may be a file. The page may any resourceaccessible via a network or a world wide web by a networked device, suchas a client computer 130. The page may be identified by a URL. The pagemay include content from a URL. The page may include any type and formof executable instructions, such as scripts, AJAX. The page may includeany type and form of graphics and/or text. The page may include any typeand form of media, such as video or audio media. The page may includecontent having text, words, keywords and links or hyperlinks to otherweb pages or web sites.

Page 517 may include any document which may be accessed, loaded, viewedand/or edited by a browser 620 and displayed on a computer screen. Page517 may include any content which may be presented via hypertext markuplanguage, extensible markup language, java, javascript or any otherlanguage or script for preparing web pages. Web page may include anytype and form of components for adding animation or interactivity to aweb page, such as Adobe Flash by Adobe Systems Inc. The page may includefunctionality for displaying advertisements, such as advertisements fromenterprises, government, companies and firms. A web page may include anynumber of ad spaces providing space or arrangement within web page fordisplaying advertisement.

The client, browser or page may include an agent 520. The agent mayinclude any type and form of executable instructions executable by thebrowser and/or client. In some embodiments, the agent comprises ascript, such as JavaScript or JSON (JavaScript Notation). In someembodiments, the agent may comprise any type and form of plug-in, add-onor component to or of browser 515. In some embodiments, the agent maycomprise any type of application, program, service, process or taskexecutable by the client.

The agent 520 may be included in the page 517 when transmitted by thecontent provider. In some embodiments, the page includes the agent inscript form as part of the content of the page. In some embodiments, thepage includes a URL to the script, such as URL pointing to oridentifying a resource or script of the servers 110, 110′. In someembodiments, the agent is loaded by the browser. In some embodiments,the agent is executed by the browser upon retrieval and/or loading ofthe page 517. In some embodiments, the page includes instructions to thebrowser or client to obtain and load or install the agent.

The agent 520 may include any logic, function or operations to interfaceto or communicate with any portion of the augmentation server 110 or adserver platform 110. The agent may include any logic, function oroperations to provide any of the services or functionality of in-text510, interest ads 512 and/or related content 514. The agent may includeany logic, function or operations to identify, collect and transmitcontent from the page to the server 110/110′. The agent may identify,collect and transmit any and/or all text in content of the page. Theagent may identify, collect and transmit any and/or all text from anypages or URLs referred to by the page. The agent may transmit anyembodiments of this page content 519 to the server 110, 110′.

The agent may comprise any logic, function or operations to receivekeywords, campaigns and/or augmented content from the server 110, 110′.The agent may comprise any logic, function or operations to hookkeywords identified in the page content. The agent may “hook” keywordsby modifying the keyword in the page content to have an indicator, suchas double underlined or an icon. Hooking a keyword refers to making akeyword on the page have a predetermined visual appearance to indicatethat interactivity would or may occur by the user interacting with thekeyword and instrumenting the page or keyword to perform theinteractivity responsive to the user interaction. The indicator mayprovide a visual indication that the keyword in the text is linked orhyperlinked. In some embodiment, the agent may link or hyperlink thekeyword. The agent may hook the keyword to include a function, script orexecutable instruction to take an action responsive to a mouse over,mouse click or other user interaction. The agent may hook the keyword todisplay a user interface overlay or tooltip such as depicted in FIG. 5J.The agent may hook the keyword to display a related advertisement oraugmented content on the page as also depicted in FIG. 5J.

The keyword matcher 522 of the server 110, 110′ may comprise any typeand form of executable instructions executable on a device. The keywordmatcher may comprise any logic, function or operations to identifymatches between one data set and another data set. In some embodiments,the keyword matcher may identify matches between keywords of campaignswith page content. In some embodiments, the keyword matcher may identifywhole or complete matches. In some embodiments, the keyword matcher mayidentify partial or incomplete matches. In some embodiments, the keywordmatcher may identify partial or incomplete matches within apredetermined threshold. In some embodiments, the keyword matcher mayidentify both complete and incomplete matches. The keyword matcher mayperform any of the keyword operations described in connection with FIGS.5A through 5F. The keyword matcher may be included as part of thecontext engine, interest engine or campaign selection engine of the adserver platform.

The keyword ranker 522 of the server 110, 110′ may comprise any type andform of executable instructions executable on a device. The keywordranker may comprise any logic, function or operations to rank a set ofdata responsive to one or more criteria. The keyword ranker may compriseany logic, function or operations to rank keywords matched to pagecontent. The keyword ranker may comprise any logic, function oroperations to provide a weighting to a keyword based on any metrics ofthe keyword, such as location, frequency, and length. The keyword rankermay comprise any logic, function or operations to provide a weighting toa keyword based on relevancy to the site. The keyword ranker maycomprise any logic, function or operations to provide a weighting to akeyword based on relevancy to a publisher or content provider. Thekeyword ranker may comprise any logic, function or operations to providea weighting to a keyword based on relevancy to a campaign. The keywordranker may comprise any logic, function or operations to provide aweighting to a keyword based on relevancy to a user or behavioralprofile. The keyword ranker may be included as part of the contextengine, interest engine or campaign selection engine of the ad serverplatform.

The keyword ranker may perform any of the keyword ranking and/orweighting operations described in connection with FIGS. 5A through 5F.An output or result of the keyword ranker may be ranked keywords 528.The ranked keywords may include any type of object, data structure ordata stored in memory or to storage. The ranked keywords may includecontextually targeted ranked keywords as described in connection withFIGS. 5A through 5F. The ranked keywords may include behavioraltargeting ranked keywords as described in connection with FIGS. 5Athrough 5F. The ranked keywords may include any combination ofcontextually targeted ranked keywords and behavioral targeting rankedkeywords. The ranked keywords may be site specific. The ranked keywordsmay be campaign specific. The ranked keywords may be publisher specific.The ranked keywords may be based on any combination of site, campaignand/or publisher.

The campaign selection engine 506 may interface or communicate with anyof the keyword matcher, the keyword ranker and/or ranked keywords. Thecampaign selection engine 506 may access, read or process campaigns 526.The campaigns 526 may be stored in any type and form of database or filesystem. The campaigns 526 may include information identifying keywordsfor the campaigns and augmented content to deliver for those keywords.The campaigns 526 may include any type and form of content, URLS,scripts, video, audio, advertisements, media, text, graphics, data,information etc. to provide as augmented content with the keywords. Thecampaigns 526 may include any type and form of URLs, advertisements,media, text, graphics, etc. to provide as augmented content with thekeywords. The campaigns may identify or provide any desired userinterface overlay/tooltip or content therein. The campaigns may beorganized by publisher. Each publisher may have a plurality ofcampaigns.

The campaign selection engine selects the campaign to deliver with thepage based on analysis of the page content from the keyword matcher,keyword ranker and ranked keywords. The campaign selection engine maycomprise any type and form of logic, functions or operations to identifyand select one or more campaigns from a list of contender or candidatecampaigns based on any criteria or algorithm. The campaign selectionengine may select those campaigns that best match or correspond to thetop ranked keywords. The campaign selection engine may select thosecampaigns that match or correspond to a predetermined number of rankedkeywords. The campaign selection engine may select those campaigns thatmatch or correspond to a predetermined set of ranked keywords. Thecampaign selection engine may select those campaigns that match orcorrespond to the ranked keywords in accordance with a priority assignedto the campaigns or publisher. The campaign selection engine may excludeor include campaigns based on the logic or criteria of any rules orfilters.

Responsive to the campaign selection engine, the server 110, 110′ maytransmit to the agent identification of one or more keywords to augmenton the page and corresponding campaigns for those keywords (see 530).The server may transmit to the agent any script, data or information toprovide or facilitate hooking of the keywords on the page and displayingthe campaign responsive to user interaction with the keyword. The servermay transmit to the agent the indicator, or identification of theindicator) to use for a hooked keyword. The server may transmit to theagent the type and form of user interface overlay to display when a usermouse over or mouse click occurs for the keyword. The server maytransmit to the agent a reference to or identification of any ofaugmented content to display when a mouse over or mouse click occurs forthe keyword. The server may transmit to the agent the augmented content,such as the advertisement, to display when a mouse over or mouse clickoccurs for the keyword.

The agent may receive the information 530 from the server and modify thepage or content of the agent to perform the hooking of the keywords, toinstrument the hooked keywords, and/or deliver the campaign responsiveto the keyword. The agent may perform any of the agent's logic,functions or operations while the web page is being loaded. The agentmay perform any of the agent's logic, functions or operations while theuser views or browsers the web page. The agent may perform any of theagent's logic, functions or operations in the background to the userviewing or browsing the page.

Referring now to FIG. 5J, embodiments of augmented content deliveredwith a corresponding keyword is depicted. In brief overview, the page517 may include an augmented keyword in the text of the content (e.g.,see double underlined “Augmented Keyword” next to “in text of content”).When a user interacts with the augmented keywords, a user interfaceoverlay 550, also referred to as tooltip, may be displayed. This userinterface overlay may deliver or provide the campaign corresponding tothe keyword. Responsive to user interaction with the keyword, the agentmay display related advertisements 554′, such as via a banner ad, oraugmented content 556′. The related advertisements 554′ and/or augmentedcontent 556′ may be displayed in connection with the tooltip, withoutthe tooltip or instead of the tooltip.

Any of the content on page 517 may include any embodiments of theadvertisements and/or augmented contented provided and discussed abovein connections with FIGS. 1 through 4E. The tooltip may be part of amulti-layered augmentation content or advertisement unit. The tooltipmay provide any one or more URLs to access related websites.

The user interface overlay 550 referred to as a tooltip may include anytype and form of web beacon 545. In some embodiments, the tooltip 550may include a plurality of web beacons. The beacon may be used fortracking a user's usage and/or interactions with the tooltip. The beaconmay identify or track a length of time of any user interaction with thetooltip and/or augments keyword or inline text. The beacon may identifya URL or tracking system to register or send communications regardingthe user interaction. In some embodiments, a web beacon may be designedand constructed for a predetermined tracking system.

A web beacon may be an object that is embedded in the tooltip that isnot visible to the user. Sometimes beacons are referred to as webbeacons, web bugs, tracking bugs, pixel tags or clear gifs. Web beaconsmay be used to understand the behavior of users who frequent designatedweb pages. A web beacon permits a third party to track and/or collectvarious types of information. For instance, a web beacon may be used todetermine who is reading a webpage, when the webpage is read, how longthe page was viewed, the type of browser used to view the webpage,information from previously set cookies, and from what computer thewebpage is accessed.

The tooltip may be incorporated, integrated or presented with any one ormore of related advertisements 554, related video 558 and/or real timestatistics 562. The tooltip 550 may include an URL 560 to any web pageor resource, such as additional content, search results, or media.Although the tooltip 550 is illustrated each with a relatedadvertisement, related video and related statistics, the tooltip 550 maybe presented with one of these related content or a plurality of theserelated contents. Although this related content is illustrated in alocation, size and position in relation to the tooltip, the relatedadvertisements, related video, and/or real time statistics may bearranged, organized or presented in any manner.

The tooltip may also include one or URLs 560, such as a hypertexted URLor link to any other page or content. In some embodiments, thehypertexted link 560 comprises a URL of a landing page of a web site. Insome embodiments, the hypertexted link 560 comprises a URL of a web pageproviding search results directly from the search engine. In anotherembodiment, the hypertexted link 560 provides a link to a recommend ormost relevant search result. In other embodiments, the hypertexted link560 provides a link to run the search query on a second search engine.The hypertexted link 560 may bring the user to a landing page of thesearch results of the second search engine.

The related advertisements 554 may include any type and form ofadvertisement related to the augmented content or inline text orotherwise related to the keyword. In some embodiments, the relatedadvertisements are advertisements provided as described in connectionwith any of the embodiments of the FIGS. 1A-4E. In some embodiments, therelated advertisements are advertisements provided by a search engine,such as in relation to and based on the search query. In otherembodiments, the related advertisements are provided by any type andform of ad network via the server 110, 110′ and/or search engine.

The related video 558 may include any type and form of video mediarelated to the augmented content or inline text or otherwise related tothe keyword. In some embodiments, the related videos are advertisementsprovided as augmented content as described in connection with any of theembodiments of the FIGS. 1A-4E. In some embodiments, the related videosare videos provided by a search engine, such as in relation to and basedon a search query. In other embodiments, the related videos are providedby any type and form of video service, such as YouTube.com oriTunes.com. In another embodiment, the related videos are videosavailable to the user via a user accessible storage or video managementsystem.

The real time statistics 562 may include any type and form of statisticsrelated to the augmented content or inline text or otherwise related tothe keyword. In some embodiments, the real time statistics 562 may beany statistics related to the person or entity of the search. Forexample, if the augmented keyword is a sports team, the real timestatistics may include current or recent game scores and/or standings ofthe team. In another example, if the augmented keyword is related to theweather, the real time statistics may include a current weatherforecast. In one example, if the augmented keyword is related to amusician, the real time statistics may include statistics on musicdownloads, album sales and top music chart location.

Referring now to FIG. 5K, embodiments of a method for augmented contentof a keyword of a web page being loaded into a browser is depicted. Inbrief overview, at step 580, an agent of the browser sends page data toserver 110, 110′ upon or while loading a web page. At step 582, theserver analyzes the page data and reduced the page data set. At step584, the server performs content filtering on page and keywords to matchto corresponding campaigns. At step 586, the server performs ranking ofkeywords. At step 588, the server matches the ranked keywords tokeywords of each campaign. At step 590, the server selects top matchingkeywords and their campaigns. At step 592, the server sends to the agentthe selected keywords and their campaigns and may provide the agenttooltips and/or augmented content. At step 594, the agent hooks thekeywords identified by the server. At step 596, the agent detects userinteraction such as mouse over or clock of keywords and displaysaugmented content, such as a tooltip.

In further details, at step 580, the agent may be executed by thebrowser upon or while loading the web page. The browser may retrieve theagent via a URL identified by the page. In some embodiments, the pagetransmitted by the server includes the agent. The agent may comprisescript places or arranged at or near the top page to be executed by thebrowser. In some embodiments, the agent may be triggered by any loadevents or APIs of the browser. The agent may be executed prior tocontent of the web page being loaded or displayed. The agent may beexecuted prior to the retrieval of any URLS of the page. The agent maybe executed prior to completion of loading of the web page by thebrowser.

The agent may identify, gather and aggregate data from the page. Theagent many identify all text portions of the web page. The agent manyidentify those elements of the page that contain text. The agent mayidentify text from a predetermined set of elements of the page. Theagent may identify text from HTML, XML or other page languages. Theagent may identify text from the body of an HTTP portion of the page.The agent may perform text recognition on any portion of the page or anyelement of the page. The agent may identify text from any URLS or othercontent referred to or loaded by the page. The agent may identify anyother date of the page, including headers. For example, the agent mayidentify the browser type, the user, location, IP addresses from thecontent of the page or from any of the network packets used forcommunicating the page. In some embodiments, the agents performsanalysis and identified metrics for the page date, such as textlocation, frequency, length and repeatability.

The agent may gather the identified page data, text or otherwise, and/orany page metrics and transmits the page data and/or page metrics to theserver 110, 110′. In some embodiments, the agent transmits the page datatogether in one transaction with the server. In some embodiments, theagent transmits portions of page data in a series of transactions withthe server. In some embodiments, the agent transmits the page data usingany type and form of protocol. In some embodiments, the agent transmitsthe page data as a background process to the browser loading the page orthe user browsing the page. In some embodiments, the agent transmits thepage data while the browser is loading the page.

At step 582, the server analyzes the page data and reduces the page datato a working set of page data to continue analysis. The server mayremove a predetermined set of commons words, such as a, and, the, fromthe page data. In some embodiments, the server may filer a predeterminedset of words, phrases, terms or characters according to any filters,rules or policies. In some embodiments, the server may identify andcorrect any typos or other inadvertences with the page data. In someembodiments, the server may perform any type and form of metrics on thepage data. In some embodiments, the server may identify location,frequency, repeatability of text on the page. In some embodiments, theserver may identify location, frequency, repeatability of text on thepage data relative to other text on the page.

At step 584, the server analyzes the text from the working set of pagedata to determine if there is any type and form of matching to anycampaigns. In some embodiments, the server performs any type and form ofsemantic matching to match keywords on the page semantically toconcepts, meanings, categories, subject matter and/or keywords ofcampaigns. In some embodiments, the server performs a phonetic matchbetween keywords on the page to keywords of campaigns. In someembodiments, the server performs a spelling match between keywords onthe page to keywords of campaigns. In some embodiments, the serverperforms content filtering on text, words, and portions of contentaround the keywords on the page to determine a context for the keywordsand match that context to campaigns. In some embodiments, the serverperforms content filtering on the page data to determine a category, asub-category, a topic, subject matter or other information indicator andmatches the same to any one or more campaigns.

In some embodiments, the server may generate a set of keyword fromcampaigns targeted towards the site of the page or publisher of thepage. The server may generate a site keyword list. The keyword matcherof the server may match keywords from a keyword list, such as the sitekeyword list, against text of the page data to identify keywords in thepage data. In some embodiments, the keyword matcher identifies multipleword phrase matches. In some embodiments, the keyword matcher identifiespartial word phrases. In some embodiments, the keyword matcheridentifies a number of times or the frequency for which a keyword isfound in the page data. In some embodiments, the keyword matcheridentifies the location of the keyword in the page data, and in furtherembodiments, relative to other keywords or boundaries of the page, suchas top or bottom.

At step 586, the server performs any type and form ranking of keywordsof the page data identified by the keyword matcher. The keyword rankermay rank all of the matching keywords. The keyword rank may rank apredetermined number of keywords. The keyword ranker may rank thekeywords according to any one or more metrics. The keyword ranker mayrank the keywords according to any one or more criteria. The keywordranker may rank each keywords by applying a weight to a value assignedto the keyword. The keyword ranker may provide any multipliers to avalued or weighted value of the keyword to increase or decrease theranking of the keyword. The keyword ranker may rank the keywords on anytype and form of scale, which may be absolute or relative.

At step 588, the server matches the ranked keywords to keywords of oneor more campaigns. The keyword matcher, ranker or campaign selectionengine may compare the list of ranked keywords, or any portions thereof,to a list of keywords of one or more campaigns. In some embodiments, theserver identifies those campaigns that are contenders to be a selectedfor the campaign for this page. In some embodiments, the serveridentifies those campaigns associated with or assigned to be a campaigntargeted to site or publisher of the page. The server may match theranked keywords against the identified campaigns. In some embodiments,the server may match the ranked keywords against all campaigns. In someembodiments, the server may change the ranking of the keywords based onresults of matching the keywords from the campaigns.

At step 590, the campaign selection engine selects a predeterminednumber of matching keywords and their campaigns. In some embodiments,the campaign selection engine selects a predetermined number of topmatching keywords and their campaigns. In some embodiments, the campaignselection engine selects a number of top matching keywords and theircampaigns corresponding to a number of matching keywords on the page.For example, if there are five unique keywords on the page and eachidentified by a campaign, the server may select five campaigns. In someembodiments, the campaign selection engine may select one campaign for aplurality of corresponding matching keywords on the page.

In some embodiments, the campaign selection engine may filter outcampaigns based on any type and form of filter rules. The campaignselection engine may rank campaigns according to any type and form ofranking. For example, the campaign selection engine may prioritizecampaigns according to clients, volume, importance, spend, budget,historical campaign performance or any other desired criteria. Thecampaign selection engine may compare the ranked keywords to the rankedcampaigns. The campaign selection engine may select any of the higher orhighest ranked campaigns matching any of the higher or highest rankedkeywords.

At step 592, the server sends to the agent the selected keywords andtheir campaigns. Responsive to the campaign selection engine, the servermay send to the agent the list of keywords to augment or hook and theircorresponding campaigns. In some embodiments, the server sends apredetermined number of additional keywords to augment or hook in casethe agent cannot hook or augment any one or more keywords in the list ofkeywords. In some embodiments, the server sends an ordered list ofkeywords. The ordered list of keywords may identify a priority ofaugmentation or hooking to the agent.

The server may send any type and form of information to the agent on howto augment or hook a keyword, what type of augmentation to use andidentifying the form and content of the augmentation. In someembodiments, the server sends to the agent publisher and campaignidentifiers for the agent to obtain or identify the appropriate campaignfor a keyword. In some embodiments, the server sends the agent anindication of the visual indicator to use for the hooked keyword (e.g.,double underlined). In some embodiments, the server sends the agent theexecutable instructions by which the keyword is hooked or for replacingthe text of the keyword with a hooked keyword.

In some embodiments, the server sends instructions for content,construction and/or display of the tooltip. In some embodiments, theserver sends a set of executable instructions providing the tooltipand/or any portion thereof. In some embodiments, the server sends a setof executable instructions providing the augmented content and/or anyportion thereof. In some embodiments, the server sends a set ofexecutable instructions providing any embodiments of the augmentedcontent, advertisements and/or tooltip of FIG. 5I. In some embodiments,the server sends content for the tooltip to provide the campaignassigned to the keyword. In some embodiments, the server sends one ormore URLs referencing a campaign to be delivered via a web-site. Forexample, in some embodiments, the server sends one or more URLS toadvertisements to be delivered for the campaign. In some embodiments,the server sends one or more scripts to agent to provide any of theabove embodiments.

At step 594, the agent hooks the identified keywords on the page Theagent may replace each keyword in the identified list of keywords fromthe server with instructions or code to hook the keyword. The agent mayhave hyperlink or link the keyword to a set of code or executableinstructions to display the tooltip, augmented content or anyembodiments of FIG. 5J. The agent may use modify the keyword to provideany type and form of visual indicator (e.g., double underlined or icon)to indicate the keyword is user interactive, hyperlinked or linked orotherwise hooked. The agent may modify the page to change the text to aliked or hooked text and to link or associated any forms of augmentedcontent of FIG. 5J to be displayed or provided via user interaction withthe hooked text. The agent may modify the page or instrument the keywordto detect when a user interacts with the keyword in a certain way. Theagent may include one or more event based functions that are triggedresponsive to predetermined user interactions. For example, the agentmay modify the page or instrument the keyword to detect when a usermouses over the keyword, clicks on the keyword, right clicks on thekeyword or left clicks on the keyword or otherwise selects anypredetermined set of keystrokes or sequence of keystrokes.

At step 596, the agent detects user interaction such as mouse over orclick of a keyword on the page and displays augmented content, such as atooltip. The agent may detect when a mouse is over the keyword at anytime. The agent may detect when a user has the cursor over the keyword.The agent may detect when a user has put focus on the keyword. The agentmay detect when a mouse is over the keyword for a predetermined periodof time. The agent may detect when a user highlights or selects akeyword. The agent may detect when the user left or right clicks on thekeyword. The agent may detect when a user double clicks the keyword. Theagent may detect when a user has put focus on the keyword and hitentered. The agent may detect any set of keystrokes with respect to thekeyword.

Responsive to the detection, the agent may display augmented content,for example, any of the forms depicted in FIG. 5I. In some embodiments,responsive to detecting a mouse over of the keyword, the agent displaysa tooltip delivering a campaign assigned to the keyword. In someembodiments, responsive to detecting a click on the keyword, the agentdisplays a tooltip delivering a campaign assigned to the keyword.Responsive to detection of the predetermined user interaction, the agentmay display augmented content of any form, such as related videos, inpredetermined areas or space on the page. Responsive to detection of thepredetermined user interaction, the agent may display advertisements ofany form, in predetermined areas or space on the page.

In some embodiments, the tooltip may remain displayed until the mouse ismoved off of the keyword. In some embodiments, the tooltip may remaindisplayed until the mouse is moved off of the keyword for apredetermined time. In some embodiments, the tooltip may remaindisplayed until the mouse is moved off of the keyword until the usercloses or exists the tooltip. In some embodiments, if the user clicks onthe keyword after the mouse over, the tooltip remains displayed untilthe user closers or exits the tooltip. In some embodiments, anyaugmented content may change as the user moves the focus or mouse overto another keyword. For example, moving the mouse to a second keywordmay cause a different advertisement to appear in a banner ad or maycause a new tooltip to be displayed or content of the current displayedtooltip to change.

The agent and may perform all or any of the steps of the method of FIG.5K in real-time upon receipt and/or loading of the page. For example,the agent and the server may be designed and constructed to performembodiments of steps 580 through 594 within a predetermined time whilethe page is being loaded by the browser. In some embodiments, the agentand the server may perform embodiments of steps 580 through 594 inmilliseconds, for example within in 100, 200, 300, 400, 500, 600, 700,800 or 900 milliseconds or within 10, 20, 30, 40, 50, 60, 70, 80 or 90milliseconds, or within 1, 2, 3, 4, 5, 6, 7, 8 or 9 milliseconds or 0.1,0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 or 0.9 milliseconds. The agent and theserver may be designed and constructed to perform embodiments of steps580 through 594 while the page is loading and before the page iscompletely loaded. The agent and the server may be designed andconstructed to perform embodiments of steps 580 through 594 in thebackground while the pages is being loaded and/or the user is browsingthe loaded page.

D. Systems and Methods for Delivered Related Video Content for AugmentedKeywords

Embodiments of the systems and methods described herein provide asolution for delivering ranked related media content for the platform'srelated content services 514. The related content service may generatenew page views or windows, such as user interface overlay windows to theusers. The related content service may provide the users withnavigational links and re-circulate users through a website, network orportal. The related content service may conveniently deliver relevantpreviews, such as clips of videos, articles and information related toone or more hyperlinked keywords on a web page. The related contentservice may automatically maintain or mirror the hyperlink style of apublisher's editorial links but also add an icon or indicator toindicate that related content has been returned. In some embodiments,the icon or the indicator indicates that the related content isavailable for selection by the user. Embodiments of the related contentservice or the platform services may rank, order and select a number ofsearched media to provide the more relevant video content of a web-site,portal or network to the user in relation to the hyperlinked keyword. Inthis manner, the related content service is re-circulating or providingpreviews of the higher ranked videos, articles and information.

Referring to FIG. 6A, an embodiment of a system of providing relatedcontent to a keyword from a selected set of ranked content is depicted.In brief overview, a browser 515 received a web page 517 from a contentprovider 120. Upon loading of the page by the browser, an agent 520sends page data 519 to the augmentation server 110, 110′ for analysis. Arelated content engine 610 analyzes the page data within a predeterminedtime threshold 615 to dynamically provide, in real-time or nearreal-time, selected ranked content 635 to the agent for display in spaceon the page 517 for or in conjunction with one or more augmented orhooked keywords on the page. The selected ranked related content 635 mayalso be delivered with any keywords and corresponding campaigns 530described elsewhere herein. The selected ranked related content 635 mayalso be delivered in the form of a user interface overlay window 550 tobe displayed over the web page 517 upon an action or a selection by theuser. The related content engine 610 may include a content relevancyengine 625 for ranking and ordering related content according to any oneor more content relevancy criteria, policies or rules 625. The relatedcontent engine 610 may obtain related content 630 from the contentprovider 120 or from any other content source accessible via network140, such as via a search engine.

The related content engine 610 may comprise hardware or softwareexecutable on hardware. The related content engine may comprise anapplication, a program, a library, a script, a service, process, task,thread or any type and form of executable instructions. The relatedcontent engine may include logic, operations or functions to obtaincontent 630 related to one or keywords, page content 519, the publisheror publisher's web-site. The related content engine may perform a searchvia one or more search engines to identify and/or obtain content relatedto one or keywords, page content 519, the publisher or publisher'sweb-site. The related content engine may perform a search on or makesrequests of or traverse a predetermined set of content providers toidentify and/or obtain content related to one or keywords, page content519, the publisher or publisher's web-site.

The related content engine 610 may identify the types and forms ofrelated content 630. The related content engine 610 may determine whichrelated content is video. The related content engine 610 may determinewhich related content is audio. The related content engine 610 maydetermine which related content is an advertisement. The related contentengine 610 may determine which related content are further web pages orpage data. Related content engine 610 may include any functionality todetermine which related content 630 includes text, content, words orscripts from a related web page. The related web page may include a webpage 517 from the same or a similar publisher, from the same or asimilar advertiser, or relating a same or a similar company or aproduct. The related web page may also be any web page that includes thesame, similar or related content to the content of the web page 517 overwhich the user interface overlay window 550 is to be displayed.

The related content engine 610 may index the related content 630. Therelated content engine may enumerate the related content 630. Therelated content engine may store or cache any related content. Therelated content engine 610 may perform any type and form of metrics onthe related content 630. The related content engine 610 may determine asize, source or type of the related content 630. The related contentengine 610 may track and store usage data on any of the related content630. The related content engine 610 may track and store user behaviordata on any of the related content 630.

The related content engine 610 may include a content relevancy engine620, which may comprise hardware or software executable on hardware.Content relevancy engine 620 may comprise an application, a program, alibrary, a script, a service, process, task, thread or any type and formof executable instructions. Content relevancy engine 620 may includelogic, operations or functions to identify, determine and rank therelevancy, semantically or otherwise of the related content 630. Contentrelevancy engine 620 may include any functionality for ranking and/orsorting any related content 630 based on relevance to the keyword, theuser or any other information or context of a web page

Predetermined threshold 615 may include any type and form of value orthreshold identifying a duration of time, such as a duration of timewithin which selected related content 635 is delivered or returned tothe client 130. Predetermined threshold 615 may include anidentification of a duration of time within which ranking, ordering andselection of the related content 630 into selected related content 635is completed. Predetermined threshold 615 may identify any duration oftime upon loading a page or while the page is being loaded by thebrowser. Predetermined threshold 615 may identify any duration of timebetween 1 and 1000 milliseconds. In some embodiments, predeterminedthreshold 615 identifies a duration of time such as 1, 2, 5, 10, 15, 20,25, 30, 35, 40, 50, 60, 70, 80, 90 or 100 milliseconds. In furtherembodiments, predetermined threshold 615 identifies 100, 200, 300, 400,500, 600, 700, 800 or 900 milliseconds. In further embodiments,predetermined threshold 615 identifies a duration of time of less than amillisecond, such as 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8 or 0.9milliseconds. Predetermined threshold 615 may vary from web page to webpage or may be a standard value for all web pages. In some embodiments,predetermined threshold 615 is determined for each web page 517individually. In other embodiments, predetermined threshold 617 is setfor all web pages 517. Predetermined threshold 615 may be used by therelated content engine 610 to perform the entire process of selectingthe related content 635 and delivering back to the client 130.

Content relevancy engine 620 may rank and sort related content 630. Insome embodiments, content relevancy engine 620 ranks related content 630based on the relevance to the keyword or the user. Content relevanceengine 620 may determine the relevance to the keyword or the user basedon the text, context or meaning of the phrase, link or portion ofcontent of web page 517 the user has selected or clicked on. Contentrelevancy engine 620 may include the functionality for determiningrecency of the content, such as the time when the content was createdand the time when it was updated. Content relevance engine 620 maydetermine the most relevant group of related content 630 using portionsof web page 517, such as words, keywords, tags, scripts and text.Content relevancy engine 620 may sort the relevant content 630 intogroups based on related content 630 type. Content relevancy engine 620sorts relevant content 630 based on type of content, such as audio,video, text, web page, pictures, advertisements, web page scripts andmore. In some embodiments, content relevancy engine 620 determines oneor more most relevant videos out of relevant content 630 out of therelevant content videos.

In other embodiments, content relevancy engine 620 determines one ormore most relevant web page 517 out of the relevant content web pages.In further embodiments, content relevancy engine 620 determines one ormore most relevant advertisements out of the relevant contentadvertisements. In still further embodiments, content relevancy engine620 determines one or more most relevant pictures, photos or graphicaldisplays out of the relevant content pictures, photos and graphics.Content relevancy engine 620 may sort and/or rank related content 630based on content relevancy criteria 625. Content relevancy engine 620may sort and/or rank information for a specified period of time andreturn the results back to the client 130 within the period of timeidentified by the predetermined threshold 615.

Content relevancy engine 620 may select the sorted and/or ranked relatedcontent 630 into the selected related content 635. Content relevancyengine 620 may include any functionality for selecting one or more mostrelevant related contents 635 into a group of selected related contents635. Content relevancy engine 620 may select videos from the relatedcontent 630 into selected videos of the selected related content 635.Content relevancy engine 620 may select web pages or links of web pagesfrom the related content 630 into selected web pages or selected linksof web pages of the selected related content 635. Content relevancyengine 620 may select pictures or photos from the related content 630into selected pictures or photos of the selected related content 635.Content relevancy engine 620 may select audio from the related content630 into selected audio of the selected related content 635. Contentrelevancy engine 620 may select advertisements or publisher content fromthe related content 630 into selected advertisements or selectedpublisher content of the selected related content 635.

Content relevancy criteria 625 may include any type and form ofcriteria, rules or guidelines for sorting and/or ranking related content630. Content relevancy criteria 625 may include instructions, policiesand rules for sorting and/or ranking information, such as relatedcontent 630. Content relevancy criteria 625 may include information usedby content relevancy engine 620 to sort and rank related content 630. Insome embodiments, content relevancy criteria 625 includes instructionsto search for information, such as words or keywords selected by theuser via search engines. Content relevancy criteria 625 may includeinformation about when a content was created and/or when the content waslast updated. Content relevancy criteria 625 may include informationsuch as time stamps to determine recency of any of the contents. Contentrelevancy criteria 625 may include instructions for searching a specifictype of related content 630 within a data base, or a storage of server110 or server 120. Content relevancy criteria 625 may include rules forsorting related content 630 into groups based on type, such as video,audio, advertisement, web page, text, pictures or graphical, productsand services. Content relevancy criteria 625 may include rules orpolicies for ranking relevant content 630 in the order from leastrelevant to most relevant. Content relevancy criteria 625 may includeuser's preferences, user's history, user behavior or list of links,hyperlinks or references the user has selected in the past. Contentrelevancy engine 620 may use the content relevancy criteria 625 of anykind to rank and/or sort related content 630.

Related content 630 may include any type and form of content or datathat can be transmitted and/or displayed via a web page 517. Relatedcontent 630 may include any content that may be included in a userinterface overlay 550. Related content 630 may be a video file, an audiofile, a web page 517 and/or web page content 519. Related content 630may include related advertisements 554. Related content 630 may includeaugmented content 556. Related content 630 may include related video558. In some embodiments, related content 630 may include URL to page560. In some embodiments, related content 630 includes real timestatistics 562. Related content 630 may include any content from a thirdparty publisher or a third party ad exchange, such as content comprisingor delivered via XML or API. Related content 630 may include any contentfrom a third party publisher or a third party ad exchange. Such thirdparty content may include any audio, video, advertisement, web page,news feed, information feed, or any other web page content.

Selected related content 635 may include any related content 630selected to be sent to client 130. Selected related content 635 mayinclude any portion of related content 630 that was sorted and/or rankedby the related content engine 610. Selected content 635 may be selectedto be delivered to client 130 via a tooltip or user interface overlay550 window. Selected related content 635 may be an audio file, a videofile, a link or a hyperlink to a web page, a web page, a picture or aphoto, an advertisement or any other type and form of related content635. Selected related content 635 may include any number of relatedcontents 630 that are ranked highest in relevance to the user. Forexample, selected related content 635 may include 1, 2, 3, 4 or 5 videosthat are most highly ranked videos in terms of relevance to the user. Inother examples, selected related content 635 includes 1, 2, 3, 4 or 5most highly ranked web pages or links to web pages in terms of relevanceto the user. In further embodiments, selected related content 635includes 1, 2, 3, 4 or 5 most highly ranked advertisements or photos. Insome embodiments, selected related content 635 includes anywhere between6 and 30 most highly ranked videos, audio files, web pages 517, links toweb pages, advertisements or any other related content 630.

Referring now to FIG. 6B, an embodiment of a user interface overlay 550having a main module that includes selected related content 635 isillustrated. User interface overlay 550 may comprise width and heightwhich may be defined in pixels. The main module or the main portion ofthe user interface overlay 550 may be positioned in the center of theuser interface overlay 550, at the top or bottom section or within anyportion of the tooltip. The heading of the user interface overlay window550 or the main module may include buttons for closing the window and/orhelp or questions. The heading may also include an entity name or logoand/or a title referencing the selected related content 635 enclosed.User interface overlay window 550 illustrated in FIG. 6B furthercomprises related articles referencing web pages 517 of the relatedcontent 630. The web pages may be selected related content 635 which mayinclude web pages 517 that are most relevant to the keyword or portionof content the user has selected in the original web page 517 loaded bythe user.

The main module of the user interface overlay 550 may include or operateusing a vibrant only algorithm. The vibrant only algorithm may includefunctionality that returns and displays to the user a module having apre-populated selected related content 635 responsive to a mouse-overaction or a selection by a user of a hyperlinked keyword within web page517. Vibrant only algorithm may include selected related content 635that may be selected and presented using Vibrant algorithm articlecontextualization. Vibrant only algorithm article contextualization mayprovide to the user with the related content 630 stored on the hostpublisher's servers 110 or 120 or the servers 110 of the hostadvertising network. In some embodiments, vibrant only algorithmprovides to the user the selected related content 635 that is picked outfrom the related content 630 selected, provided, serviced or approved bythe publisher host publisher, host server or host advertising network.Vibrant only algorithm article contextualization may use any informationstored on a server 110 or server 120 as related content 630 from whichthe selected related content 635 is acquired, filtered, sorted and/orranked to be selected and presented to the user.

The main module of the user interface overlay 550 may include any thirdparty material or content providing functions, such as for example athird party XML/API only algorithm. The third party XML/API onlyalgorithm may include any logic, programs and/or functionality thatpresent to a user a module of a user interface overlay 550 windowpre-populated with XML feeds and/or APIs from a third party publisher, athird party host, a third party advertiser or a third party ad exchangenetwork. The third party XML feeds and/or APIs may include selectedrelated content 635 ranked and selected from the related content 630stored on the servers 110 or servers 120 of the third party publisher,advertiser, host or ad exchange company. The third party XML and/or APIalgorithm may present content that includes any selected related content635 pertaining to a third party. The third party XML/API algorithm maypresent content that includes results from third party search engines,such as Google.com search engine, Yahoo.com search engine and/or databases from any sources of information such as databases, websites and/orweb pages from anywhere on the world wide web or from any privatenetwork. In some embodiments, a combined vibrant only algorithm andthird party XML/API algorithm is used to present selected relatedcontent 635 within a main module. In such embodiments, upon a mouse-overor a selection of a link by a user, the user receives a user interfaceoverlay 550 window comprising selected related content 635 selected froma pool of related content 630 from both the host publisher and/oradvertiser network servers as well as from the related content 630 ofthe third party publishers and/or third party advertiser networks.

The main module of the user interface overlay 550 may include functions,states or controls, such as an On/Off state or button. The On/Off statemay be determined by Partner Management System settings. The PartnerManagement System settings include any system or function for usingfeedback or end-user behavior, interests, web pages selected orinformation about the behavior of the user to generate, predict orestimate preferences of the user. In some embodiments, user interfaceoverlay 550 includes a window, such as a web page window, which mayexpand vertically to the maximum pixel dimensions as specified in aspecification. In some embodiments, the horizontal dimensions of theunit remain static, while the vertical dimensions extend or change. Inother embodiments, vertical dimensions of the user interface overlay550, while the horizontal dimensions are static. In further embodiments,both the horizontal and vertical dimensions change, expand or contract.The information returned within the user interface module 550 mayconform to the specified Title, Body Copy, Call To Action (CTA) for theuser, settings and/or thumbnail values.

The main module of the user interface overlay 550 window may conform toany s-settings or specifications. In some embodiments, the main moduleconforms to color specifications. The color specifications may includethe color of the title text, user interface overlay 550 background,text, search button, search bar, calls to action (CTAs), links,hyperlinks or any other portion of the user interface overlay 550. Insome embodiments, user interface overlay 550 is expandable to a definedmaximum set in terms of length units, such as inches or centimeters orin pixels. User interface module 550 may include the links of the hostpublisher or the host advertisement exchange, such as for example linksof host publisher or host advertiser's content, such as for exampleVibrant Media contents. The links may be pre-populated on the servers,and displayed immediately when the unit is displayed. In someembodiments, upon expansion of the user interface overlay 550 by aspecified number of pixels, one or more third party links can bedisplayed.

The third party links or hyperlinks displayed within the main module ofthe user interface overlay 550 may be pre-populated from the servers110, and displayed immediately when the unit user interface overlay 550is displayed to the user. In some embodiments, a search bar is attachedto the bottom of the main module. In further embodiments, a logo isshown at the top left hand corner of the page. If articles have alreadybeen visited by the user previously, an indication may be provided toindicate to the user that the user has already visited such selectedrelated content 635. Such indication may be implemented by showing agraphic to the right hand side of the article results of the selectedrelated content 635 displayed.

Referring now to FIG. 6C, an embodiment of a user interface overlay 550window having a bottom module comprising selected related content 635 isillustrated. In some embodiments, FIG. 6C illustrates an emergence ordisplay of the bottom portion or bottom module of the user interfaceoverlay 550. The bottom module of the user interface overlay 550 mayinclude any functionality or embodiments as the main module of the userinterface overlay 550 and vice versa. The bottom module may be locatedin the bottom portion of the user interface overlay 550 and may bepre-loaded initially when the user interface overlay 550 is first loadedor it may be loaded later upon a mouse-over or a click by a user. FIG.6C further illustrates an embodiment in which the user interface overlaywindow 550 expands vertically to include a new bottom module emergingfrom the bottom of the user interface overlay 550 window. The userinterface overlay 550 window of FIG. 6C may extend vertically from aninitial height in pixels to a new and larger height in pixels.

In some embodiments, when a user selects a keyword on web page 517, auser interface overlay 550 may appear displaying only the main module.As the user interface overlay 550 extends, a new module, such as thebottom module, may appear comprising additional content, such as videos,audio files, web pages, advertisements and links of the selected relatedcontent 635. In other embodiments, the bottom module and the main moduleappear immediately and together when the user selects the keyword. Theuser interface overlay 550 may expand automatically or in response to anaction of a user, such as a mouse-over or a click. The contraction orexpansion of the user interface overlay 550 may extend or expand by apredetermined size in the number of pixels. In some embodiments, thesize of the increase or expansion of the user interface overlay 550 maybe determined for each user interface overlay 550 window individually.In such embodiments, the user interface overlay 550 window may extend byonly a minimum number of pixels necessary to include the additionalcontent to be displayed within the extended portion of the userinterface overlay 550. In some embodiments, third party XML/API feed maybe used to present thumbnails, title, description and call to action forthird party content. The third party data may be displayed in the bottomportion of the user interface overlay 550 or the sliding or expandingportion. In some embodiments, until all of third party data or contentis loaded, there may be no indication that the bottom portion of theuser interface overlay 550 is present, as sometimes no third party datamay be available.

The sliding or expanding of the user interface overlay 550 and emergenceof the bottom module may occur when the third party XML/API data orselected related content 635 is loaded. In such embodiments, theoriginal host publisher articles section in the main module or portionof the user interface overlay 550 may be compressed or expanded. Theuser interface overlay 550 may expand to the maximum pixel dimensionsize as defined in the specifications. The content returned within theexpanded module may conform to the title, body copy, call to action andthumbnail values. In some embodiments, an option is available to embedvideo from the third party XML/API feeds into the user interface overlay550.

Referring now to FIG. 6D, an embodiment of a user interface overlay 550window having a top module comprising selected related content 635 isillustrated. The top module may include any functionality of a mainmodule or the bottom module and vice versa. In some embodiments, FIG. 6Cillustrates an emergence or display of a top portion or top module ofthe user interface overlay 550. User interface overlay 550 window mayexpand or extend vertically to expose a new module at the top of theuser interface overlay window 550. In some embodiments, upon user mouseover on a hyperlinked keyword of web page 517 a pre-populated mainmodule is illustrated. Additionally, when results are returned from theXML/API feed then XML/API results may slide from the bottom of the mainmodule, and form part of the main module. In some embodiments, the topmodule reveals itself sliding out from the main module upon a mouse-overor a click by a user. The top module may include additional content orinformation, such as for example Wordcast advertising. In someembodiments, after a mouse-over or a click a live lookup or a cacheddata may be displayed, such as third party, XML/API data, Wordcastadvertising or VIA advertising. Such advertisements may be limitedwithin a space of a module, such as a top module and within apredetermined area defined by a specific number of pixels. In someembodiments, if a module, such as the top module is displayed beforeother modules, content, such as selected related content 635 may bepopulated into this module before populating other modules. In someembodiments, horizontal dimensions of the top module remain static whilethe vertical dimensions expand and contract. In other embodiments,vertical dimensions are static and horizontal dimension expand andcontract. In further embodiments, if the main module is not present, thetop module acts as an independent module and includes the logo on thetop left corner of the module.

Referring now to FIG. 6E, an embodiment of a user interface overlay 550window having a sliding window on the side of the user interface overlay550 comprising selected related content 635 is illustrated. The slidingwindow may have a size in pixels, such as for example 300 by 250 pixelsand may include pictures, photos, links, videos, search tabs,advertisements or any other content. The sliding window may includeIn-Text services 510, such as Vibrant In-Text services that may includeVibrant In-text Ads (VIA). The sliding window may sometimes also bereferred to as Vibrant In-Text Advertisement (VIA) unit or VIA module.Once content that is comprised within the sliding VIA module is loaded,VIA module may slide to present new content to the user. The slidingwindow or the VIA module may include any functionality of the mainmodule, top and bottom modules and vice versa. The sliding window mayinclude On/Off states and functions. The sliding function may becontrolled by the publisher host servers 110 or 120 or the third partypublisher's servers 110 or 120.

In some embodiments, if the user interface overlay 550 is less than 250pixels high and/or if there is a Vibrant In-Text Advertisement (VIA)module to be displayed, then the main module or main module plus topmodule combined should automatically expand to 250 pixels. The VIAmodule may slide out for a predefined period set by server 110 or by auser. In order to accommodate the slide out function, some white spacemay be present within VIA module. The unit must be able to expandvertically to the maximum pixel dimensions as specified. The horizontaldimensions of the VIA module and/or of the user interface overlay 550may remain static. In some embodiments, the horizontal dimensionschange. In some embodiments, VIA module is displayed only if there isenough content to populate 300×250 pixel sized VIA module and if thereis a contextual or behavioral match found in order to identify andreturn selected related content 635.

User interface overlay 550 modules may be ordered so that the mostrelevant articles, links, photos, videos or any other selected relatedcontent 635 appear at the top of any lists displayed. Rankings may becalculated based on recency and/or on relevance. In some embodiments,related content 630 is ranked based on how recent related content 630 isand/or how relevant the content is. Content may be ordered and/or rankedbased on relevance and/or recency for host publisher and hostadvertisement content as well as the third party publisher andadvertisement content. User interface overlay 550 may include In-Textadvertisement content as well as the related content 630. Keywords theuser selected may be added to a keyword database. The keyword databasemay include operations that can run a report and/or analyze and acquireany new keywords that may come up as the result of the search.Contextualization from embedded user interface overlays 550 may takeinto consideration multiple keywords on the page, and then rank in orderof relevance.

Referring now to FIG. 6E, an embodiment of a user interface overlay 550is illustrated. User interface overlay 550 may comprise any number ofmodules, such as the main module, top module, bottom module and VIAmodule. Parameters of the user interface overlay 550 may be set for eachindividual user interface overlay 550 on a per channel basis. Ability toadjust the minimum and maximum amount of pixels for the user interfaceoverlay 550 window and/or any module may be included. In someembodiments, default dimensions of a top module and main module are322×272 pixels. In further embodiments, default dimensions of the mainmodule and the bottom module are 322×325 pixels. In further embodiments,default dimensions of any or all of the modules are 322×372. In stillfurther embodiments, any of the modules may include a length of anywherebetween 1 and 2000 pixels, such as 10, 20, 50, 100, 150, 200, 250, 300,350, 400, 450, 500, 550, 600, 650, 700, 800, 900, 1000, 1200, 1400,1500, 1600, 1800 and 2000 pixels. In yet further embodiments, any of themodules may include a width of anywhere between 1 and 2000 pixels, suchas 10, 20, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600,650, 700, 800, 900, 1000, 1200, 1400, 1500, 1600, 1800 and 2000 pixels.The size of the modules and/or interface overlay 550 may be adjustedbased on the size and/or shape of the selected related content 635displayed within the modules.

In some embodiments, a minimum amount of articles and/or related content630 or selected related content 635 that are included in the userinterface overlay 550 may be set before the user interface overlay 550is displayed. In some embodiments, a maximum amount of articles and/orselected related content 635 to be displayed within user interface unit635 may be set. These settings may be changed on a server side 110 byany publisher or advertiser, or on a client side by the user. Settingsfor allowing or enabling and/or disallowing or disabling types ofmodules on a particular web page may be included. These settings mayalso be controlled via the server side 110 by any publisher oradvertiser or by the user. Each web page 517 may have a customizablecolor hex color code. This option may allow the publishers and/oradvertisers to define the sites color choices.

In some embodiments, the logo may be displayed on the top left corner ofthe main module. If the main module is not available, the logo may bedisplayed on the top module. In some embodiments, when a web page or aweb site is signed up with the host publisher at server 110, a logo maybe included with the server 110. The location of the logo image may besaved so that it can be included into the user interface overlay 550.The user may define for how long the ad, or a module of user interfaceoverlay 550 window is slid out. In some embodiments, the default for aduration of slid out module is 30 seconds. In other embodiments, thistime duration is amended at user level or at the server level.

An RC unit tag may be used or called on a predefined placement. This tagmay be compatible with 3^(rd) party advertising servers and may be hardcoded. Slide animations may be removed for some page embedded content.Some modules may be positioned in different portions of the userinterface overlay 550 to match the page of the publisher, the thirdparty publisher as well as the host publisher. In some embodiments, theVIA unit or module resides at the top of the user interface overlay 550,or on the left side or on the bottom, instead of at the right hand side.

Referring now to FIG, another embodiment of a user interface overlay 550is illustrated. Upon user mouse over on a hyperlinked keyword of webpage 517, a user interface overlay 550 may be displayed showing the topmodule residing on top of the main module. The top module may includeembodiments of WordCast advertising. In such embodiments, the user maysee advertisements from a larger selection of sites or a largerselection of publishers and/or advertisers. When a user visits a page,user interface overlay 550 may he provide the user with additionalenhancements such as a preview screenshot of the link destination. Thepreview screenshot of the link destination may be a miniature version ofthe web page 517 and/or video or file at the destination link. Thescreenshot of the destination link page may be of any size, such as forexample of any size of a module or a user interface overlay 550.Similarly, upon user mouse over on a Vibrant article or 3^(rd) partyXML/API, the user may be presented with a screenshot of what the landingpage will look like.

Referring now to FIG. 7, an embodiment of steps of a method fordelivering to a user related content based on an augmented keyword of aweb page 517 is illustrated. FIG. 7 may also relate a method fordelivering related video content for augmented keywords on the web page517. At step 580′, an agent 520 sends page data or content 519 to server110 while a web page 517 is being loaded by browser 515 or upon the pageis loaded by the browser. At step 582′, server 110 analyzes page data orpage content 519 and reduces the data set. At step 584′, server 110matches campaigns to content filtering for the web page 517. At step586′, server 110 ranks the keywords of web page 517 based on pluralityof criteria. At step 788, server 110 identifies related content/videos630. At step 790, server 110 selects and orders the relevant relatedcontent into selected related content 635. At step 792, server 110 sendsthe matching keywords along with the relevant selected related content635 to the agent 520 on the client 130 within a predetermined timeperiod. At step 794, agent 520 hooks keywords. At step 796, agent 520detects mouse over, or a click of a keyword by a user and displays auser interface overlay 550 comprising the selected related content 635.

In further overview of FIG. 7, at step 580′ the agent 520 executing on aclient 130 browser 515 may send data or content 519 from web page 517 toaugmentation server 110. Step 580′ may include any step, operation,action or embodiment described at step 580 of FIG. 5K. The agent 520 maybe initialized, loaded and/or activated by any load event or API of thebrowser 515 or web page 517. The agent 520 may be executed prior tocontent of the web page 517 being loaded or displayed or during theloading of the web page 517. The agent 520 may identify, gather andaggregate data from the page. The agent many identify and/or gather anytext portions of the web page, any content such as scripts, tags orURLs, any HTML, XML, java script or other page languages functions orcode and any other content of web page 517. The agent 520 may transmitto server 110 any content identified and/or retrieved, such as textand/or any page metrics and transmits such content to server 110. Theagent 520 may transmit the page data 519 together in one transaction tothe server or via a series of transactions. The agent 520 may transmitthe page data using any type and form of protocol. In some embodiments,the agent 520 transmits the page data while the browser 515 is loadingthe web page 517. In other embodiments, the agent 520 transmits the pagedata upon the page 517 is loaded by the browser 515. In furtherembodiments, the agent 520 transmits page data 519 upon receiving amessage from the server 110 to send the page data 519. In still furtherembodiments, the agent 520 sends page data 519 within a predeterminedtime threshold, such as predetermined threshold 615.

At step 582′, the server 110 analyzes the page data 519 and reduces thepage data to a working set of page data to continue analysis. Step 582′may include any actions, steps or embodiments of the step 582 in FIG.5K. Server 110 may use any subset of web page 517 data 519 to performanalysis of the web page 517.

At step 584′, the server matches campaigns to content filtering for thepage. The server may match the text from the working set of page data todetermine if there is any type and form of matching to any campaigns.Server 110 may perform any type of semantic matching to match keywordson the page semantically to concepts, meanings, categories, subjectmatter and/or keywords of campaigns. Server 110 may filter out thecontent to include only files of a certain type, such as video files oraudio files, or web pages, or links etc. Step 584′ may include anyactions, steps or embodiments of the step 584 in FIG. 5K.

At step 586′, the server 110 performs any type and form ranking ofkeywords of the page data identified by the keyword matcher. Step 586′may include any actions, steps or embodiments of the step 586 in FIG.5K.

At step 788, server 110 identifies related content 630, such as videos.In some embodiments, related content engine 610 identifies the relatedcontent 630. Related content 630 may be identified by filtering the dataor contents corresponding to any campaigns stored on the server 110.Related content 630 may be identified using data from a third partyserver, a third party publisher or a third party advertising network orad exchange. Related content 630 may be identified based on XML or APIsfrom a third party publisher or a third party ad exchange network.Related content engine 610 may identify the related content using asearch of web pages 517 from the same or similar publisher, the same orsimilar ad exchange network and/or a same or a similar content. Relatedcontent engine 610 may identify related content 630 by searching videofiles having the same or similar content, or a same or similardescription as one or more keywords from web page 517. In someembodiments, related content 630 is identified by searching web pages517 of the world wide web for information indicated in the keywords fromthe web page 517. In other embodiments, related content 630 isidentified from the results from search engines. Related content 630 maybe identified based on the user behavior information. In someembodiments, related content engine 610 identifies related content 630using the keywords of web page 517 and information or data relatinguser's interests, such as data the user has previously searched oraccessed. In some embodiments, identified related content 630 includes avideo file, such as a related video 558. In further embodiments,identified related content 630 includes an advertisement, such asrelated advertisement 554. In still further embodiments, identifiedrelated content 630 includes augmented content 556. In yet furtherembodiments, identified related content 630 includes URL to page 560.

At step 790, server 110 selects and orders related content such asvideos 630 into a group of selected related content or videos 635.Related content engine 610 and/or content relevancy engine 620 maydetermine which related content 630 is relevant. Relevant content mayinclude any related content 630, such as videos, audio files,advertisements and web pages. Relevant content may be selected using anyinformation about web pages, videos or audio files the user has accessedor searched for previously. In some embodiments, relevant content isdetermined based on the information about user's behavior and/orinterests to determine which content out the user is likely to beinterested in. Relevant content may also be determined using keywordsfrom the web page 517 in combination with information about the user.Related content engine 610 or content relevancy engine 620 may determinemost relevant content using any content relevancy criteria 625. Relevantcontent may be determined based on weights of keywords matched in theweb page with information stored at server 110. In some embodiments,relevant content is determined based on the data freshness or recencyinformation, such as the information about the time of creation of thecontent or when the content was last updated. Relevant content may bedetermined by filtering the content types or formats, such as video,audio, web page, stream or any other type of content. Relevant contentmay be ordered or ranked according to the relevance and the mostrelevant contents may be selected into selected related content 635. Insome embodiments, any combination of weighted keywords from web page517, user data and/or information about the user, data freshness orrecency information and data types and format may be combined todetermine the selected related content 635. In some embodiments, a groupof most relevant videos is selected. In other embodiments, a group ofmost relevant web pages 517 is selected. In further embodiments, a groupof most relevant advertisements is selected. In still furtherembodiments, any group of any type and form of related content 630 issorted and ranked to select the selected related content 635 to presentto the user.

At step 792, server 110 sends matching keywords with the selectedrelated content 635 to agent within a predetermined time period. Relatedcontent engine 610 may send to agent 520 any number of selected relatedcontent 630 of any format. Keywords transmitted along with the selectedrelated content 635 may correspond or be related to the selected relatedcontent 635. Related content engine 610 may send to agent 520 anycombination of and any number of: related videos 558, relatedadvertisements 556, augmented content 556, URL to pages 560 and/or realtime statistics 562. Related content engine 610 may send to agent 520information and/or instructions for creating or forming a user interfaceoverlay 550. Selected related content 635 may be transmitted along withinstructions to display the selected related content 635 within userinterface overlay 550. In some embodiments, related content engine 610sends to agent 520 information about setting or organizing the userinterface overlay 550. Related content engine 610 may send instructionsand/or information about organizing selected related content 635 withinone or more modules of the user interface overlay 550. Selected relatedcontent 635 may be sent along with keywords from web page 517 to whichthe selected related content 635 corresponds. The keywords may be usedfor In-Text advertisement in web page 517. Selected related content 635may include content that corresponds or is related to one or more of thekeywords of the web page 517.

Still at step 792, selected related content 635 and/or keywords may betransmitted to agent 520 within a predetermined time threshold or apredetermined time period. In some embodiments, related content engine610 returns to agent 520 selected related content 635 within apredetermined amount of time from the web page 517 being loaded by thebrowser 515. In other embodiments, selected related content 635 istransmitted to the agent 520 within a predetermined amount of time fromthe completion of loading of web page 517 by the browser. In stillfurther embodiments, selected related content 635 is transmitted to theagent 520 within a predetermined amount of time from the moment when theagent 520 was executed by the browser 515. In yet further embodiments,selected related content 635 is transmitted to the agent 520 within apredetermined amount of time from an action by a user, such as amouse-over, a click, a movement of a mouse or a signal from the keyboardof the user. The predetermined amount of time within which selectedrelevant content 635 and/or keywords are returned to agent 520 may beany predetermined threshold 615 described herein.

At step 794, agent 520 hooks keywords received from related contentengine 610. Agent 520 may hook any keyword received from the server 110.Agent 520 may modify, augment or change web page 517 to make any keywordinteractive. In some embodiments, the keyword is underlined by agent520. In further embodiments, keyword is double underlined to distinguishthe hooked keyword from any other content or text of web page 517. Agent520 may change the color, size and/or font of the keyword that hooked bythe agent. The hooked keyword may correspond to any of the selectedrelated contents 635 transmitted. The agent may modify the keywordwithin web page 517 to be used as a trigger for displaying userinterface overlay 550. Agent 520 may hook the keyword such that the userinterface overlay 550 comprising selected related content 635 isdisplayed on the user's computer screen upon a selection or an action bythe user. The selection or the action initiating the display of the userinterface overlay 550 may be a mouse-over action by the user over thekeyword on web page 517. The user may also initiate the display of theuser interface overlay 550 by clicking on the keyword within web page517.

At step 796, agent 520 detects a mouse over or a click of the keyword bythe user and displays a user interface overlay 550 window that comprisesthe selected related content 635. Upon a mouse over action by a userover the keyword augmented in web page 517, user interface overlay 550may appear or display. In some embodiments, the user interface overlay550 appears upon a click by a user on the keyword. The keyword is thesame keyword that is received by the agent 520 from the server 110. Theuser interface overlay 550 displaying over a portion of web page 517 maycomprise one or more modules. The modules of user interface overlay 550may each include a number of selected related content 635. In someembodiments, a module of the user interface overlay 550 includes links,such a URL to page 560. In other embodiments, a module of the userinterface overlay 550 includes augmented content 556. In furtherembodiments, user interface overlay 550 includes related video 558. Instill further embodiments, user interface overlay 550 includes relatedadvertisements 554.

E. Systems and Methods for Design and Development of Unit Types Via aDevelopment Tool

Referring now to FIG. 8A, an embodiment of a system for designing andgenerating a unit type 835 comprising a tooltip 550 is illustrated. Thesystem may comprise a development tool 800 for a user to design andgenerate a unit type 835 by populating unit type templates 810 withmodular components to create and organize the tooltip 550 content. Inbrief overview of FIG. 8A, a server 110 is illustrated comprising adevelopment tool 800 for designing and generating a unit type 835 thatincludes a tooltip 550 comprising graphical and/or textual content.Development tool 800 comprises a unit template selector 805 forselecting a unit type template 810 from a plurality of unit typetemplates 810 A-N. Development tool 800 may further include one or moremedia blocks 815A-N. Media blocks may include generic and customizedcontent to be used to populate the unit type template 810 and/or unittype 835.

A design layout 830 of the development tool 800 may be used to design aparticular unit type 835 from scratch or using a unit type template 810.Unit type 835 may comprise a tooltip 550 which may further includecomponents, such as header, 841, footer 842, one or more side bars 843and sliding windows 844 and a tail 845. Tooltip 550 may further comprisecontent, such as media blocks 815, organized within rows and cellstructures of the tooltip 550 for storing the display content.Development tool 800 also includes a unit type generator 820 forgenerating a unit type based on the design and content specified via thedevelopment tool. The unit type generating may generate the unit typeand store the unit type in an output file 825. Once the unit type 835has been created via the development tool 800, the unit type may bedeployed to the remote client 130 to be loaded by browser 515 anddisplayed together with web page 517.

Development tool 800 may include functionality for a user, such as adesigner of unit types 835 or tooltips 550, to design, develop andpopulate with content any unit type 835. Development tool 800 mayprovide the designer with an interface and system to design and developthe unit type 835 using modular components which may be selected,dragged and/or dropped via a user interface of the development tool 800.Development tool 800 may provide the designer with an interface andsystem to customize, change, create, edit or modify any feature,function or portion of the unit type 835 or the tooltip 550. Developmenttool 800 may provide the designer with an interface and system tocustomize, change, create, edit or modify any content of the unit type,such as media blocks 815 deployed within the tooltip 550 or based on theapplication of the unit type 835. Development tool 800 may provide thedesigner with an interface and system to move, arrange, organize,format, style, color or otherwise change the appearance or look and feelof the unit type.

Upon the completion of design of the unit type 835, unit type generator820 may generate an output file 825 comprising a representation of thedesigned unit type 835, such as in script or executable code. Theresulting output file 825 may include browser executable instructionsfor loading, creating and/or displaying the unit type 835 on the remoteclient 130 computer in response to a user selection or a mouse-over of akeyword on a web page 517 loaded by the browser 515 of the remote client130.

Referring to FIG. 8A in greater detail, a development tool 800,sometimes referred to as a tooltip designer, may include any software,hardware or a combination of software and hardware for designing,editing and generating a unit type 835. Development tool 800 may includeany computer executable code, a logic unit, a script, a function, aprogram, an executable file, a compiler, a software application, asoftware development tool, a library or any other component fordesigning, editing, creating and/or generating a unit type 835 and/or atooltip 550. Development tool 800 may include any functionality forassembling modular components or content within a template 810 of a unittype 835. Development tool 800 may include functionality for including,excluding, arranging and reordering any content within a tooltip 550 ofthe unit type 835. Development tool 800 may include a graphical userinterface to enable a user of the development tool, such as a designer,to interact with the development tool and the unit type 835 features andcontents. In some embodiments, development tool 800 includesfunctionality enabling a user to select, drag and drop components, suchas media blocks 815 into sections or portions of the design layout 830.In further embodiments, development tool 800 includes functions forarranging or organizing content within a unit type 835 and/or tooltip550. In still further embodiments, development tool 800 includesfunctionality to allow the designer to edit or revise the programmingcode or browser executable code of the unit type 835 manually.Development tool 800 may further include any functionality forgenerating a browser executable code into an output file 825 in order toenable a remote browser 515 to load, recreate and display the unit type835 as designed on development tool 800 on a remote client 130.

Development tool 800 may include any functionality for selecting andediting any unit type template 810 to create, populate and assemble aunit type 835. In some embodiments, a development tool 800 includesfunctions for enabling a user to select a particular template in orderto create a unit type 835. Development tool 800 may include modularcomponents that may be assembled, rearranged, edited and added to atemplate 810 in order to create a unit type 835. In some embodiments,development tool 800 includes functionality to remove or revise thecontents and/or components of the unite type template 810. Developmenttool 800 may include a plurality of panels or panes for designing,arranging or rearranging any portion or section of unit type 835 or atooltip 550. Development tool 800 may include functions, algorithmsand/or programs for enabling a user to arrange a layout of a tooltip 550and/or unit type 835. Development tool 800 may further include one ormore design layouts 830 within which the user may drag and drop,activate or deactivate components of a unit type 835 and/or tooltip 550.The user operated or controlled components may include media blocks 835,headers 841, footers 842, side bars 843, slide windows 844 or any othercomponent. Development tool 800 may enable the user to edit or revisepositions of any of these components or contents, thus rearranging thelook and order of the unit type 835 or tooltip 550.

Development tool 800 may include any functionality for generating anoutput file 825. In some embodiments, development tool 800 comprises thefunctionality for creating, generating and outputting a computerexecutable code, functions or algorithms based on a design of a unittype template 810 or unit type 835 as designed and displayed in thedevelopment tool 800. Development tool 800 may include the functionalityfor calculating and creating the sizes and shapes of the unit type 835based on the sizes, shapes and arrangement of contents, such as mediablocks 815, links, headers 841, footers 842, side bars 843, slidingwindows 844, tails 845 or any other component of the tooltip 550.Development tool 800 may use a unit type generator 820 to include intothe resulting unit type 835 script of the output file 825 any customizedfeatures, actions, events, instructions or modifications made to theunit type 835. The unit type generator 820 may generate any set ofprogramming code, instructions or customized features of the unit type835 which may be used by a remote browser 515 to recreate the replica ofthe unit type 835 along with any customized features of the unit type835.

Design layout 830 of the development tool may be a graphical interfaceand layout for designing, arranging and/or creating a layout of a unittype 835 and/or a layout of tooltip 550. Design layout 830 may comprisea user interface window or a space within which a unit type 835 and/ortooltip 550 may be drawn, designed, organized, edited and populated withcontent, such as media blocks 815. Design layout 830 may include afunction or an application for drawing, editing or modifying a unit typetemplate 810 into a desired customized unit type 835. Design layout 830may include a gritted background which may include columns and/or rowsfor drawing, creating, designing and organizing the unit type 835 orcomponents or contents to be displayed within a unit type 835. Designlayout 830 may include functions and algorithms facilitating activating,deactivating and including or excluding of functions, contents, orportions of a tooltip 550, such as headers 841, footers 842, side bars843, slide windows 844, tails 845. Design layout 830 may enableresizing, reshaping, creating or deleting of cells, rows or columns of atooltip 550 within which content may be displayed. Design layout 830 mayinclude functions for dragging and dropping and arranging content, suchas media blocks 815 within the cells, rows and/or columns of the tooltip550 content container. Design layout 830 may include functions forrearranging, editing and redrawing any portion of the unit type 835and/or tooltip 550. Design layout 830 may include applications forincluding unit type templates 810 within unit types 835.

Unit type 835 may comprise any combination of elements to form apredetermined arrangement and selection of content for a user interface,such as a tooltip 550. The unit type may include tooltip 550 along withany set of features, graphics or functions relating or surrounding atooltip 550. Unit type 835 may comprise any selection of content thatmay be presented via tooltip 550 or within a tooltip 550. Unit type 835may comprise a tooltip 550 and/or any functionality of a tooltip/userinterface overlay 550. Unit type 835 may include a border, a shadowand/or a container for containing or comprising a tooltip 550. Unit type835 may include functions or features external to a tooltip 550 whichmay be deployed with a tooltip 550 and used to control the tooltip 550or any portion or content of the tooltip 550. Unit type 835 may comprisecontent that may be loaded, executed and displayed by a remote browser515. In some embodiments, unit type 835 includes any functionality orcomponent of tooltip 550, such as a module, a sliding window 844, aheader 841, a footer 842, a side bar 843 or a tail 845. In furtherembodiments, unit type 835 comprises one or more cells defined by rowsor columns, such as the cells, rows or columns of the tooltip 550 usedfor storing content, such as media blocks 815.

Unit type 835 may include any generic content or customized content.Unit type 835 may include customized appearance for a tooltip 550. Thecustomized appearance of the unit type 835 may include a modified size,shape, color or a design of any portion of the tooltip 550, which mayfurther be customized for functionality based on the preferences of anyparticular advertisement campaign or application. Customized unit type835 may include a functionality of tooltip 550 which may provide adifferent look or appearance to each tooltip 550. Unit type 835 mayinclude a feature that are customized for a particular content of a webpage 517, as well as customized for a particular advertisement contentor media block content 815. A unit type 835 may include any design,feature, shape or a functionality which may be in accordance with a unittype template 810. In some embodiments, a unit type 835 include designsand features that are based off of a unit type template 810 and furthermodified, reshaped and resized in order to accommodate any needs of thecontent displayed within tooltip 550.

Unit type 835 may be designed, shaped and/or personalized to include anyportion of tooltip 550 or any content displayable by a browser 515. Insome embodiments, unit type 835 includes a main module of tooltip 550.In further embodiments, unit type 835 includes a bottom module oftooltip 550. In still further embodiments, unit type 835 includes asliding window, such as a sliding window 844. In yet furtherembodiments, unit type 835 includes a header 841. In yet furtherembodiments, unit type 835 includes a footer 842. In still furtherembodiments, unit type 835 includes a side bar 843. Unit type 835 mayinclude a related content 630 or selected related content 635. Unit type835 may further include any number of media blocks 815, augmentedcontents 556, related videos 558, related ads 558, related contents 630and/or URLs to pages 560. Unit type 835 may include an agent 520. Unittype 835 may include any type of content that may be run, loaded and/ordisplayed by a browser 515. Unit type 835 may include any functionalityof any unit type template 810. Unit type 835 may include any customized,modified, set or configured functions or features of any unit typetemplate 810.

Unit template selector 805 may comprise any functionality for selectingone or more unit type templates 810 from a plurality of unit typetemplates 810 A-N. Unit template selector 810 may comprise any software,hardware or a combination of software and hardware. Unit type selector805 may include a function, a script, a software code, a program and/oran executable. Unit type selector 805 may include any functionality forselecting a particular template for any unit type 835. Unit typeselector 805 may include a menu, such as a drop down menu, or aselection menu for selecting a template for a unit type 835. Unit typeselector 805 may include functionality for creating a new template or anew layout for designing a new unit type 835. Unit template selector 805may include functionality to allow a user of development tool 800 toselect a design of a unit type 835 or a design of a particular tooltip550. Unit template selector 805 may include functionality for sendingany selected unit type templates 810 to the design layout 830.

Unit type templates 810A-N may include any number of templates orexamples of unit types 835. The unit type templates may be loaded intodesign layout 830 and that may be further edited in order to create aunit type 835. A unit type template 810 may include any pre-drawn orpre-designed layout. A unit type template may include a partial layoutof an example of a unit type 835 or a model of a unit type 835. Unittype template 810 may further include a computer executable code orscripts for creating or displaying the unit type template 835 in abrowser 515. Unit type templates 810 may be written or designed usingany browser executable code or script, including HTML, XML, java,javascript or any other programming code. Unit type template 810 mayinclude any individual, function, portion or a section of a tooltip 550.In some embodiments, unit type template 810 includes a compilation offunctions of tooltip 550.

A unit type template 810 may be loaded into design layout 830 to becomea unit type 835. Unit type template 810 may be editable and/orconfigurable in accordance with user's preferences to be formed, shapedand/or modified within design layout 830 into a unit type 835. A unittype templates 810 A-N may include a templates each of which may includesame or different shapes, colors, functions and layouts. In oneembodiments, a unit type template 810 includes a main module of atooltip 550. In other embodiments, a unit type template 810 includes atop module of a tooltip 550 and/or bottom module of the tooltip 550. Insome embodiments, a unit type template 810 includes a sliding window844, a header 841, a side bar 843 and/or a footer 842. Unit typetemplate 810 may include any content, such as any media block 815, anyrelated content 630, selected related content 635 or any contentdescribed herein which may be displayed using a tooltip 550.

Unit type templates 810A-N may vary from template to template and may beselectable by the user based on the application, functionality and/ordesired appearance. Each of the unit types 810 may be converted into asingle format. The unit types 810 may include features, configurationsand parameters which are designated for this format and described usingcomments. The users may utilize the comments to implement anyfunctionality available to the particular unit type 810. A unit typetemplate 810 may include intelliTXT features and functionality alongwith any name-value pairs. Unit type templates 810 may include anyfunctionality of a tooltip 550 including in-text and related contentfunctionalities. Unit type template 810 may include HTML content whichmay be further modified with additional modular functions which may beimplemented using XML, javascript or java code or functions. Unit typetemplates 810 may be sorted based on their complexity. In someembodiments, unit type templates 810 include rich media templates whichinclude complex media blocks 815, such as video, flash and graphicalcontent. In other embodiments, unit type templates include standardand/or resource templates which may be used for supporting mediumcomplexity media blocks 815 or text, scripts and/or simple content. Unittype templates 810 A-N may include customizable or editable features,such as background colors, call to action functions and font sizesand/or colors. In some embodiments, unit type templates 810 compriseunit types 835 that were previously created and/or customized from otherunit type templates 810.

Media blocks 815A-N may include any number, type and format of content,such as content that may be displayed within a unit type 835 or atooltip 550. A media block 815 may include any media content, flashcontent, text content, video or audio content. Media content 815 maycomprise any type and format a video, an audio, a graphical content or apicture or an animation. Media content 815 may include any script orprogramming code comprising commands, settings, parameters orinstructions in any format or language, such as an HTML, XML, javascriptor java content or any other browser executable code. Media blocks 815may comprise any content described herein, such as an advertisementcontent, an advertisement video or audio, a related video 630, aselected related videos 635. Media block 815 may include a web page 517or a portion of a web page 517, a search box for a search engine orlink, such as a URL to page 560. In some embodiments, media block 815includes an augmented content 556. In further embodiments, media block815 includes a related video 558. In still further embodiments, mediablock 815 includes related ads 558. In yet further embodiments, mediablock 815 includes agent 520. Media block 815 may comprise any content,component or a feature that may be displayed within a main module, topmodule, bottom module or a sliding window of a tooltip 550. In someembodiments, media block 815 includes a core component, such as forexample content comprising text, image, flash file or iframe. In furtherembodiments, media block 815 comprises custom components, such as forexample custom designed advertisements, videos or images. Media block815 may include any content which may be displayed by a browser 515.

Unit type generator 820 may include any hardware, software, or acombination of hardware and software for creating and/or generatingoutput representing the unit type, The output may be stored to an outputfile 825. The output file may includes executable code or instructionsfor displaying a unit type 835 by a browser 515. A unit type generator820 may include any functionality for compiling, creating and/orgenerating any computer executable program or code that may be used by abrowser 515 to recreate and display a unit type 835 or a tooltip 550.Unit type generator 820 may include any function, program, script,application, executable, compiler or an algorithm for generating acomputer executable code. Unit type generator 820 may includefunctionality to generate any set of instructions, commands, functionsand algorithms to be used by a web browser 515 to display a unit type835 and/or a tooltip 550.

Unit type generator 820 may include functionality for creating orgenerating any type and form of code for rendering a unit type 835. Theunit type generator may generate script code that provides renderingdirectives or instructions to the agent for rendering the unit type viaa browser. For example, the unit type generate may generate any type andform of JSON script code to be executed or provide instructions to thescript of the agent for rendering the unit type. The unit type generatormay generate a set of execution directives understood by the agent torender or otherwise provide and display the unit type via the browser.The unit type generator may generate a set of execution directives withcorresponding text or information for providing, forming or renderingthe unit type via the agent and/or the browser. The unit type generatormay generate directives, commands or instructions for rendering any ofthe media components of the unit type. The unit type generator maytranslate the design of the unit type in the layout to instructions orcode for providing elements of the unit type within a predetermined setand size of rows and columns. The unit type generator may generateinstructions or code for rendering the unit type to have a predeterminedwidth and length or size and to have the elements of the unit type fitor be arranged within rows and columns of the predetermined size.

Unit type generator 820 may include functionality for loading any unittype 835 designed within a design layout 830 and generate a set ofdirectives, instructions, command or code for creating and/or renderingunit type 835 by the agent. In some embodiments, unit type generator 820loads a unit type 835 from design layout 830 including all of thecontent of the unit type 835 and generates script code for thisparticular unit type 835. The generated output may be stored within afile, such as an output file 825. Unit type generator 820 may locallystore the output file 825, or send the output file 825 to a remotestorage or memory.

Output file 825 may include any type and format for a file. The outputfile may include executable code for generating and displaying a unittype 835 or a tooltip 550. Output file 825 may include any type andformat of content, such as XML, HTML, java, javascript and/or any othertype of browser 515 executable, readable or processable content. Outputfile 825 may include a script or code for a script to generate and/ordisplay a unit type 835 and/or tooltip within a browser 515 of a remoteclient 130. In some embodiments, output file 825 includes instructions,content and components of a unit type 835. Output file 825 may includeany functionality, code or instructions for regenerating or creating aunit type 835 as designed within design layout 830 by the user.

Output file 825 may include any instructions, computer executable codeand/or components or content to render a tooltip 550 by the agent.Output file 825 may include source code for a tooltip 550. Output file825 may comprise a tooltip's properties and/or settings. Output 825 mayfurther include a tooltip's content structure. In some embodiments,output file 825 includes media blocks 815 and/or content to be displayedwithin unit type 825. Output file 825 may include URL(s) for obtainingand/or display content of the unit type. Output file 825 may includeinstructions to direct the rendering of the unit type. Output file 825may include information about components that surround tooltip 550, suchas the shadow or tooltip container.

Output file 825 for each template 810 may include a comment markupsyntax which may include information about the unit type 835 or thetemplate 810. The information presented by the syntax may be parsed andunderstood by the development tool 800. The syntax may be implementedusing Javascript Object Notation (JSON). To allow the development tool800 to read information from unit type template 810 or unit types 835,additional information may be included in the templates. Thisinformation may be expressed using meta comments. Meta comments may beformatted in a certain way so that they can be identified by developmenttool 800 from the output file 825.

In one embodiment, a meta comment may include a syntax, such as:

///@METATITLE<JSON: ‘OBJECT’}.

In this embodiment, three back slashes identify a comment syntax. Thecomment syntax may ensure that a browser 515 does not interpret theinformation that follows this syntax as part of the javascript template.“@METATITLE” identifies a title of the meta comment and “{JSON:‘OBJECT’} identifies comment details. Comment details may includeinstructions, information, or describe additional properties of the metacomment. In some embodiments, meta comments are included in the outputfile 825. In other embodiments, meta comments are not included in theoutput file 825.

Header 841 may comprise any header of a unit type 835 or tooltip 550.Header 841 may include any header or a top portion of a window or apage, such as a web page 517 or a pop-up window. Header 841 may includea background section which may include features, such as buttons orlinks. In some embodiments, a header 841 may include an off or a closebutton for exiting a tooltip unit type 835 or tooltip 550. Header 841may include a minimize or maximize button for minimizing or maximizing aunit type or tooltip 550. Header 841 may include one or more logos, suchas a logo of a publisher company or an advertisement network. Header 841may also include logo of a sponsor or a company or enterprise beingadvertised. Header 841 may include optional features or buttons, such ascontrol buttons. In some embodiments, header 841 includes an edit buttonwhich may comprise links to features or functions for editing thetooltip 550 or using a functionality of the tooltip 550. Header 841 mayinclude help button for requesting more information about tooltip 550.

Footer 842 may comprise a portion of the bottom side of the tooltip 550which may comprise any functions or information. Footer 842 may includea search box or a link to a search engine. Footer 842 may include abrand logo, an enterprise logo or an advertisement content. Footer 842may include a module, such as a bottom module of tooltip 550. Footer 842may include links to web pages or media content. Footer may also includemedia blocks 815.

Side bar 843 may comprise any portion of the tooltip on the left or onthe right side of the tooltip 550. Side bar 843 may include a slidingwindow 844 which may extend out from the side module upon a mouse-overor click by a user. Side bar 843 may include any content, such as links,advertisements or media blocks 815. Side bar 843 may comprise modules ofthe tooltip, such as the top module, bottom module or the side module.Side bar 843 may comprise any tooltip module, such as a main module, topmodule or bottom module. Side bar 843 may include a logo or anadvertisement of a publisher or the advertiser. In some embodiments,side bar 843 includes information about the tooltip 550.

Sliding window 844 may comprise any window comprising content which mayslide out from or extend from a tooltip 550. Sliding window 844 mayinclude any content such as media blocks 815, links to web pages,information about a product or advertisements. Sliding window 844 mayinclude any embodiment of a tooltip 550, including any layout of amodule, such as a top module, bottom module or a main module. Slidingwindow 844 may be sized to fit the content being comprised within thewindow. Sliding window 844 may slide out of the tooltip 550 in responseto a user selection or automatically. Sliding window 844 may be used fordisplaying related content 630 in a separate slide out of the tooltip.In some embodiments, sliding window 844 may include any advertisementsthat may be presented to the user.

Unit type 835 may include a tail 845 for identifying or pointing to akeyword on web page 517. The keyword pointed to by the tail 845 may bethe keyword in response to which unit type 835 or the tooltip 550 isinitiated. Tail 845 may highlight the hooked keyword and indicate to theuser that the content of tooltip 550 relates to this keyword. This tailmay be connected to the tooltip 550 and may be positioned on any portionof the outer edge of the tooltip 550. Tail may be positioned in top leftcorner, top right corner, bottom left corner or a bottom right corner.Tail may be positioned or offset any distance to the left or to theright from any of the corners of the tooltip 550. Tail 845 may bepositioned or moved on any location around the outer edge of the unittype 835 or tooltip 550 based on the content of the web page 517 orbased on the layout of the tooltip 550 or unit type 835.

Referring now to FIG. 8B, an embodiment of a development tool 800 userinterface is illustrated. In brief overview, an embodiment of adevelopment tool 800 may include user interface components which mayinclude contents for populating a unit type template 810. Thedevelopment tool 800 may also include a design layout 830. Design layout830 may include design canvas or a design panel within the userinterface window in which a unit type template 810 and/or unit types 835may be designed, edited and displayed. Design canvas of the designlayout 830 display an embodiment of a unit type template 810 or unittype 835. The unit type template 810 or unit type 835 displayed withinthe design canvas is divided into cells, rows and columns. Design layout830 further includes a structure panel for displaying a tree structureformat of the unit type and a properties panel for displaying theproperties of each of the unit type 835 components selected in thedesign canvas. Contents for populating the unit type template 810 or theunit type 835 are located to the right of the design layout 830. Thecontents may comprise media blocks 815 and may be sorted into corecomponents and custom components. Core components may include mediablocks 815, such as $iTXT.tmpl.Text, $iTXT.tmpl.Image, $iTXT.tmpl.Flashand $iTXT.tmpl.Iframe. Custom components may include media blocks 815,such as $iTXT.tmpl.AdFooter and $iTXT.tmplImageCar. The contents or themedia blocks 815 may be selected individually by the user or thedesigner and inserted into the cells, rows or columns of the unit type835 or unit type template 810 displayed in the design canvas. Dependingon the embodiments, the layouts of the unit type template 810 may or maynot be editable. In some embodiments, unit type template 810 may beedited to include additional cells, rows and columns. In otherembodiments, the template layout cells, rows and/or columns are noteditable.

Still referring to FIG. 8B, a design layout 830 may display a number ofpanels. A design canvas or a design panel may include a visual drawingor a visual representation of the unit type template 810 or unit type835 along with its components. A structure panel of the design layout830 may include an internal template structure using a tree control.Each of the rows, cells and components that make up the template may bepresented in the structure panel in accordance with their hierarchicalstate. When an item is selected in a structure panel, a properties panelof the design layout 830 may display any properties that can bemodified. Upon selection of an item in the structure panel the designcanvas may highlight the actual component visually. The user may createnew rows, columns and/or cells using the structure panel. User interfacecomponents, such as core components or custom components may be draggedand inserted into the cells of the unit type template 810 in the designcanvas of the design layout 830. Media blocks 815 which may be selectedand inserted into the cells, rows and/or columns of the unit typetemplate 810 or unit type 835. As the user populates the template 810,structure panel may reflect each new component or media block 815.Structure panel may identify the location of such components in terms ofthe rows, columns and/or cells they occupy. Properties panel mayidentify the properties of each component or portion of the unit typetemplate 810 or unit type 835 selected in the design canvas.

Development tool 800 may also include a view tab bar to allow the userto see different views of the unit type 835. The view tab bar may belocated towards the top section of the design layout 830 and may enablethe user to view or open any number of screens or panels within designlayout 830. In one embodiment, the view tab bar comprises a Design view.The design view may present to the user with a view comprising designcanvas panel, structure panel and properties panel. In anotherembodiment, a view called Source, may present to the user a constructionof the template source code. The user may use the Source view to view,monitor and/or edit the code of the template. Another view, which may becalled Preview, may allow the user to view and monitor the currentversion of the unit type 835 in practice along with dummy advertisementdata. In one example, a user may use the Design view to populate variouscells with content, such as media blocks 815. The user may then use theSource view to edit some of the source code and fine tune the unit type835 or the tooltip 550. The user may then turn to Preview pane to view,monitor and test the designed unit type 835 or tooltip 550. The user mayuse the Preview pane to determine if the unit type 835 functionscorrectly in the test environment presented by the Preview pane.

Unit type template 810 and/or unit type 835 being designed within thedevelopment tool 800 may include properties implemented using javascriptobject notation (JSON) object format. Tooltip properties may be includedat the beginning of template class initialization function. A StartWidthproperty or feature of the tooltip properties may be used to identifythe start width of the tooltip content. The actual tooltip width may bechanged depending on the requirements of the template structure. AStartHeight property may indicate the start height of the tooltipcontent. The actual tooltip height may also be changed depending on therequirements of the template structure. A Header, LeftSideBar andRightSideBar properties may also each include a user interface componentclass name to use for the Header, LeftSideBar and RightSideBar of thetooltip instead of the default properties.

The structure of the tooltip may be defined in an array created withinthe initialization function or method of the templates class. Thestructure array may define the layout of the rows and cells as describedin the previous section. Each row and cell may include width and heightproperties, and their own structure property which may include a childarray object describing the child components.

In one example, the structure of the tooltip 550 components, such as thearray of cells, rows and columns may include an instructional or afunctional code, such as:

[ type: ′row′, height: 30, structure:  [ { type: ′cell′ structure: [ {type: ‘comp’, comp: ‘$iTXT.ui.Text’, props: { text: ‘${AD.TITLE}’ } } ]}, { type: ′cell′ structure: [ { type: ‘comp’, comp: ‘$iTXT.ui.Text’,props: { text: ‘${AD.DESC}’ } } ] } ] ]

In such and similar embodiments, a row of the structure may comprisemultiple cells. In further embodiments, a cell may further includemultiple rows or a component, such as a media block 815. In someembodiments, a component included within the cells comprises a propertythat defines the class of the component. In some embodiments, a tokensubstitution object is included, such as for example an object to altera style of the unit type 835:

{ backgroundImage: ‘http...com/ast/ftr/ftr_$(CC}_${AD.COLOR}.gif’ }

Development tool 800 also includes an event section for adding andediting events. Customized events may be added based on theapplications. Functions used for including and/or using events mayinclude code, such as:

{ mouseClick: function( ) { alert(“UI Component Clicked”); },imageChange: function( ) { alert(“Image Changed”); } }

Each unit type template 810 may include any type and form of core andcustom components which may be included in the cells of the tooltip 550.The core components may be include components, such as $iTXT.tmpl.Textwhich may include a text field that displays a portion of styled text.Core components may also include $iTXT.tmpl.Image comprising an image,$iTXT.tmpl.IFrame comprising an iframe element and/or $iTXT.tmpl.Flashcomprising a flash movie.

Custom components may be included as a part of unit type template 810.Custom components may also be available via a library or an externalfile. Custom components may comprise $iTXT.tmpl.ProductList which mayinclude a list of products from different vendors that may appearunderneath the main product in a tooltip. Custom components may alsoinclude $iTXT.tmpl.AdFooter which may comprise a custom Footer componentthat displays the details of an advert and two call to action buttons.

User interface components of the development tool 800 may include$iTXT.tmpl.ElementBase class which may provide certain requiredfunctionality for any individual component. The ElementBase class mayinclude functions which can be extended by the subclass. The ElementBaseclass may include $iTXT.tmpl.Row and $iTXT.tmpl.Cell classes, which mayextend from ElementBase and provide extra functionality to handle thelayout of rows, cells and components within the tooltip content.Functions, such as init or initialization function may be used to setupa unit type 835 or any portion or component within unit type 835. Aresize function may set width and height properties of the unit types835 or any component within the unit type 835. A render function may beused to return the root document object platform (DOM) information. Adestroy function may be used to destroy or erase components that need tobe removed. A destroy function may be called to remove any eventsubscriptions and remove any nodes from the DOM.

When defining the value of a property within the tooltip creationapplication, or within the actual template manually, token notation maybe used such as $ {AD.TITLE}, which may be processed when the componentis created and substituted with the title of the block media, such asthe advertisement content. In some embodiments, tokens may be mixed withtext or introduced into a URL, such as for example:

http://image.intellitxt.com/ast/footer/FTRCTA_${CC}_${AD.COLOR}.gif

In this example, an image URL may use a channel and advertisement valueswithin the actual URL. A new class may be created to be used to performtoken substitution. The new class may allow usage of nested objects sothat tokens, such as for example “AD.TITLE” may resolve to a propertywithin the tokens object called AD and a property of that object calledTITLE.

Development tool 800 may include options or effects which may be usedfor generating or creating unit types 835. A resize effect may beincluded into or applied to a unit type 835 or a component within theunit type 835. In some embodiments, resize effect is used to resize amedia block 815 within unit type 835 in response to an action, such as aselection of a user or a mouse-over. The resize may be done from acurrent size or an initial size of the component to another size inpixels, or simply to a percentage of the current size. The resize effectmay modify only the width and height values of an element or component.Resize effect may be used in combination with other effects. Acombination effect may be used or applied to perform multiple effects atthe same time. The combination effect may include a command or aninstruction, such as: $iTXT.fx.Combination.

Development tool 800 may further include models, such as an event model.The event model may enable the components, functions or sections of theunit type 835 created by the development tool 800 to operate in absenceof direct communication between the components using global variables orstructures. In some embodiments, unit types 835 may be subscribed todocument object model (DOM) events. In other embodiments, third partyjavascript libraries, such as JS or jQuery may be used to provideevents. Events may be subscribed to and unsubscribed from by any of thecomponents.

A notification list of events may include events which may triggeractions used by the components, sections or media blocks 815 of the unittype 835 or any portion of the unit type 835 and/or hooked keywords onweb page 517. Events may be included with unit types 835 or anywhere onthe client 130 or server 110.

A tooltip container, unit type 835 or tooltip 550 may include or beassociated with any number of events, such as: $iTXT:tt:before:position,$iTXT:tt:before:open, $iTXT:tt:after:open, $iTXT:tt:before:close,$iTXT:tt:after:close and $iTXT:tt:queue:hide. Event$iTXT:tt:before:position may be fired or executed when the tooltip isabout to be shown, and before the positioning algorithm is called. Event$iTXT:tt:before:open may be fired or executed when the tooltip is aboutto be shown, and after the positioning algorithm is called, just beforethe tooltip is actually opened. Event $iTXT:tt:after:open may beexecuted or fired when the tooltip is displayed on the screen, and anyopening animations or media blocks are loaded. Event$iTXT:tt:before:close may be executed or fired just before the tooltipis closed and the close animation starts. Event $iTXT:tt:after:close maybe fired when the tooltip is hidden from view and after the closeanimation has completed. Event $iTXT:tt:queue:hide may be called orexecuted when a tooltip queue hide event is called, such as for examplewhen the mouse has first left the tooltip. The tooltip may then behidden after a certain time.

A hooked keyword may include or be associated with any number of events,such as $iTXT:hook:over, $iTXT:hook:out, and $iTXT:hook:click. Event$iTXT:hook:over may be fired or executed when a user mouse is over thehooked keyword. Event $iTXT:hook:out may be fired or executed when themouse leaves the keyword. Event $iTXT:hook:click may be executed whenthe user clicks on the keyword.

Tooltip 550 may further include events, such as $iTXT:tts:before:fadc:inand $iTXT:tts:after:fade:in. Event $iTXT:tts:before:fade:in may becalled just before the shadow of the tooltip fades in, or when thetooltip is visible, but before the whole animation is completed. Event$iTXT:tts:after:fade:in may be called just after the shadow has faded inand the tooltip is fully visible.

Tooltip 550 and/or unit type 835 may also include or enable actionevents. An action event $iTXT:tt:set:size may be called by a componentto set the required content size of the tooltip. Parameters used in thisaction event may include a parameter w for width, a parameter h forheight and a parameter anim for indicating if change or function shouldbe animated. An action $iTXT:tt:close may be called to close the currenttooltip. A parameter animated may be used to indicate if the closingshould be animated.

Unit type 835 and/or tooltip 550 may be sided based on the contentincluded within the tooltip. In some embodiments, any sizes specifiedfor media blocks 815 may be used to determine the size of the contentwithin tooltip 550. In some embodiments, tooltip 550 may be dynamicallyresized based on the content being resized or displayed at the moment.In some embodiments, a default size for the content portion of tooltip550 is 300 pixels by 200 pixels. The final tooltip size may becalculated by adding the space required by all the components around thetooltip content itself. While sizing the tooltip 550, left and rightside bars 843, header 841 and footer 842 may be taken in consideration.

Unit type 835 may be dynamically resized. In some embodiments, tooltip550 may comprise media blocks 815, such as flash contents andadvertisements which may expand based on viewing or actions of the user.Unit type 835 may include instruction or event, such as$iTXT:tt:set:size event which may be used to resize the media block 815,such as a flash movie or an advertisement. Media block 815 may alsoinclude internal functions which to resize its own internal userinterface in order to resize.

Development tool 800 may include hooked keyword wrapping. In oneembodiment, unit media 835 includes functions to identify a location inwhich the user placed a mouse over the hooked keyword. The functions maydetermine if the tooltip needs to be placed close to this location orelsewhere. In some embodiments, a method is used for working out whichpart of a hooked keyword the tooltip needs to be displayed near andwhether or not the keyword is wrapped. In one embodiment, if a keywordincludes a plurality of words, each word may be redefined as a keyword.By having a plurality of individual keywords that are displayed as asingle keyword, it may be easier to determine the location of thekeyword of the plurality over which the user has placed the mouse. Themouse over event for the hooked keyword may report the target as one ofthe child elements which it contains. The position of the target elementmay be used to determine where the tooltip needs to be displayedespecially when the hook is wrapped over two lines. The position of eachof the child elements or the each individual word elements of the largerkeyword, may also be used to determine the bounds of the hook on eachline.

Still referring to FIG. 8B, unit type template 810 and/or unit type 835designed within the development tool 800 may include code such as:

/**  * This source code is Copyright (c) Vibrant Media 2001-2009 andforms part of  * the patented Vibrant Media product “IntelliTXT” (sm). * @author arussell  */////////////////////////////////////////////////////////////////////FILE LOAD INDICATOR! DO NOT REMOVE//////////////////////////////////////////////////////////////////$iTXT.js.loader[“$iTXT.tmpl.TestTemplate”] = true;////////////////////////////////////////////////////////////////////Loader Function $iTXT.tmpl.TestTemplate_Load = function( ){ //Speed upaccess to undefined var undefined; //CUSTOM COMPONENT INCLUDES //ENDCUSTOM COMPONENT INCLUDESIn further embodiments, unit type template 810 and/or unit type 835designed within the development tool 800 may include a code such as:

/**  * This source code is Copyright (c) Vibrant Media 2001-2009 andforms part of  * the patented Vibrant Media product “IntelliTXT” (sm). * @author arussell  */////////////////////////////////////////////////////////////////////FILE LOAD INDICATOR! DO NOT REMOVE//////////////////////////////////////////////////////////////////$iTXT.js.loader[“$iTXT.tmpl.TestTemplate”] = true;////////////////////////////////////////////////////////////////////Loader Function $iTXT.tmpl.TestTemplate_Load = function( ){ //Speed upaccess to undefined var undefined; //CUSTOM COMPONENT INCLUDES //ENDCUSTOM COMPONENT INCLUDES //START TEMPLATE CLASS $iTXT.tmpl.TestTemplate= $iTXT.core.Class.create($iTXT.tmpl.TemplateBase, /** @lends$iTXT.tmpl.TestTemplate.prototype */ { /**  * The TestTemplate  *@constructs  * @param {Object} _options The new object options  */ init:function(_options, $super) { //START TEMPLATE OPTIONS var defOpts =$iTXT.core.Util.extend( { } , _options); //END TEMPLATE OPTIONS //STARTTEMPLATE STRUCTURE this.structure = [{ type: ‘row’, structure: [  {type: ‘cell’, structure: [  { type: ‘row’, height: 30, structure: [{type: ‘cell’ },  { type: ‘cell’ }] },  { type: ‘row’, structure:  [{type: ‘cell’}, { type: ‘cell’}] }]},  { type: ‘cell’

Referring now to FIG. 8C, an embodiment of a structure panel for a fullypopulated unit type 835 designed in a development tool 800 isillustrated. Structure panel may include a hierarchical tree structureidentifying contents and media blocks 815 of a unit type 835 createdwithin a design layout 830. The structure panel may also allow the userto change properties for the header 841, footer 842, left and right sidebars 844 as well as the content portion which may be further split intoany number of cells. For the header, footer and sidebars, the userinterface components may be replaced with a custom class of componentlibraries. For example, some agencies or campaigns may include their owncustomized contents, which may be used as media blocks 815. Componentsdisplayed in the structure panel may be highlighted or selected toreveal the properties of these components in the properties panel. Theproperties panel may display all editable properties of any currentlyselected structure node in the structure panel.

Referring now to FIG. 8D, an embodiment of a unit type 835 created usinga development tool 800 is illustrated. Unit type 835 includes a tooltipcontainer. The tooltip container may provide a space within which thetooltip 550 is displayed or deployed. The tooltip container may alsoinclude functions, such as borders, shading or graphics that enhance thelook or appearance of the tooltip 550. Unit type 835 further includesshadow. The shadow may surround the outer edge of the tooltip 550 forappearance and emphasis of the tooltip 550. Tooltip 550 may include aheader 841, a footer 842, a left side bar 843 and a right side bar 843.Each of the components of the unit type 835 may be modular, includingthe tooltip container and the shadow.

Referring now to FIG. 8E, another embodiment of a unit type 835 createdusing a development tool 800 is illustrated. A particular embodiment ofunit type 835 may include a tooltip 550 that may be referred to aschrome tooltip. Chrome tooltip may include a design of unit type 835from a particular unit type template 810 for creating chrome tooltips.Other tooltips may be designed differently using different unit typetemplates 810. The chrome tooltip may be created, controlled andoperated using JavaScript and HTML. Any interactive media within thisparticular embodiment of tooltip 550 may be implemented within acontained flash movie. Expandable video functionality may be provided toincrease a size of a movie or a video being played within a containedflash movie portion of the tooltip 550. Such expansion of the movie maybe triggered by a mouse-over or click by a user viewing the tooltip 550.The expansion of the movie may resize the movie being played to enable amore satisfying viewing for a user viewing the tooltip 550. In oneembodiment, resizing of the unit type 835 or any component, such as thevideo being played within the unit type 835, such as the chrome tooltip,may be handled by a JavaScript function.

Still referring to FIG. 8E, this embodiment of the unit type alsoincludes a tail 845 that points to a keyword of web page 517. In thisembodiment, the tail 845 is located on the lower end of the unit type835 and towards the left corner, though offset from the corner itself.In some embodiments, placement of the tail 845 is dependent on thelocation of the augmented keyword, also referred to as the hookedkeyword. For example, tail 845 may be placed on a top right corner inorder to ensure that the tooltip 550 points to the keyword and is stilldisplayed within the user's screen. Placement of the tooltip 550 may bedetermined based on the placement of the keyword within the web page orthe screen of the user. Similarly, tail 845 may be placed anywhere onthe outer edge of the tooltip 550 such that the tooltip may bepositioned clearly on the user's screen. Placement of the tail 845 andunit type 835 may be based on the location of the keyword. Therefore,unit type 835 and tail 845 positioning may be calculated in real timeand adjusted should the keyword location within the screen change.

Upon a user mouse-over on a keyword of web page 517 a tooltip 550 mayappear. The tooltip 550 may include a design and functionality elementssuch as a word in the top right hand corner next to the close buttoninforming them what the unit is about, such as for example anadvertisement. Also a “learn more” or a “what is this?” button may beincluded which may be used to explain to the user what tooltip 550 isand what the privacy policy of the publisher or the advertisementnetwork is. In some embodiments, a ‘Close’ button is included forclosing the tooltip. The media block 815, such as an animation or movie,may automatically load and display. The tail 845 may point to thekeyword, so that the user is able to see the relevance between thekeyword and the tooltip 550. Additionally, the keyword may behighlighted for a duration of time so that the tooltip 550 is visible,further increasing the relevancy connection between the keyword andtooltip.

Upon a mouse off, the tooltip 550 may shrink back towards the keyword,thus also emphasizing the keyword/tooltip association. Upon the mouseover, the keyword may revert back to its original state, so that it isno longer highlighted and indicated as the keyword. If a tooltip 550 ispresent, the keyword may be modified to be displayed in a particularcolor. The tooltip tail 845 may also include a same or a similar color.In some embodiments, the tail 845 may be colored in any color based onthe configuration.

Referring now to FIG. 8F, another embodiment of unit type 835 isillustrated. FIG. 8F also presents a tooltip 550 positioning based ontooltip container. In some embodiments, position of the unit type 835 orthe tooltip 550 on the display screen depends on the container offsetsettings. The offset settings may be based on where the tooltip tail 845is in relation to a corner of the tooltip 550. This offset may be basedon the corner that is nearest to the tooltip tail 845. FIG. 8Fillustrates position state of the tail 845 as well as the number of thepixels from the nearest corner, which is the lower left corner of thetooltip 550. Tooltip 550 further is surrounded by tooltip shadow and ispositioned within a tooltip container. This particular embodimentincludes sizes in pixel for each of the unit type 835 components. Theheight of the tooltip 550 may be 262 pixels. The offset distance of thetail 845 from the lower left corner may be 56 pixels. The width of thetooltip shadow may be 29 pixels. Header 841 may have a size of 300pixels by 21 pixels. Footer 842 may have a size of 300 pixels by 6pixels. Content of tooltip 550 may be positioned within an area of 300pixels by 200 pixels.

Referring now to FIGS. 8G and 8H, embodiments of tooltip 550 containersfor storing content are illustrated. FIG. 8H illustrates container of atooltip content having rows and cells. The container of the contentcomprises a width of 300 pixels and height of 200 pixels. The containerincludes fixed rows having fixed height and width and dynamic rowshaving dynamic height and fixed width. Layouts of unit type templates810 may be implemented using object based approach. In some embodiments,block elements may be used to populate the template instead of thetables. A layout algorithm may be implemented using JSON code and DOMelements to mimic the behavior of HTML tables. Row and cell objects maybe used to store media blocks 815.

Rows may be a container for storing other contents. Rows may includecell objects. The width of a row may be up to a 100% of the parentcontainer width. In some embodiments, the width of the row is the totalwidth of its child cells included within the row. In furtherembodiments, the width of the row is whichever is bigger of the 100%parent container width of the child cell's width. The height of the rowmay either be a fixed height or it may be set to whatever height is leftavailable in the parent container. The layout algorithm may work out thetotal height of all the fixed height rows, and then divide the remainingspace up equally between any dynamic height rows as illustrated in FIG.8G.

FIG. 8H illustrates an embodiment of a tooltip content containercomprising same rows as in FIG. 8G, but further comprising cells locatedwithin rows. Cell objects may include a number of objects or media block815. A cell's height may be determined based on the height of the childobjects or media blocks 815 stored within the cells. Cells may have aheight determined based on the height of its parent container. The widthof a cell like the height of a row, may either by dynamic or fixed. Whenthe width of a cell is dynamic, the width of the cell may be calculatedby sharing the remaining space of its parent with other dynamic cells ofthe same row.

Referring now to FIG. 8I, an embodiment of an algorithm for positioninga unit type 835 and a tail 845 within a client computer 130 screen isillustrated. Unit type 835 and/or tooltip 550 may be positioned withinthe client's screen in relation to a hooked word in web page 517. In oneexample, the hooked keyword may be located in the top right corner ofthe screen. The tooltip 550 of the unit type 835 may, in such instances,be placed below and to the left of the hooked keyword. Tail 845 of thetooltip 550 may be placed on the towards the top right side of the unittype 835 and pointed to the hooked keyword. Similarly, arrangement andplacement of both, the unit type 835 and tail 845 of the tooltip 550 mayvary based on the location of the hooked keyword.

In some embodiments, there are multiple set locations with respect tothe hooked keyword in which unit type 835 may be located. In oneembodiment, unit type 835 is positioned above and to the right of thehooked keyword. In one embodiment, unit type 835 is positioned above andto the left of the hooked keyword. In one embodiment, unit type 835 ispositioned below and to the right of the hooked keyword. In oneembodiment, unit type 835 is positioned below and to the left of thehooked keyword. Priority of different positions may be determined basedon the content of the page 517. In some embodiments, position of theunit type 835 is determined based on the content that falls beneath eachof the tooltip 550 positions. For example, when choosing the location inwhich to display the unit type 835, unit type 835 may be positioned tothe right and above of the hooked keyword in response to a determinationthat a movie content, a flash content or a graphical content would beblocked if the unit type 835 was positioned differently.

Tooltip positioning algorithm illustrated by FIG. 8I may take inconsideration four different locations of the tooltip 550 of the unittype 835, such as the top left, top right, bottom left and bottom rightpositions with respect to the keyword. The tooltip positioning algorithmmay decide if the content which the tooltip would block is an area ofthe web page 517 to avoid displaying the tooltip on. If the area of theweb page 517 is determined to be avoided, then the next position forplacing the tooltip 550 is sought. The areas determined to be avoidedmay be referred to as the avoidance nodes. Tooltip positioning algorithmmay be comprised within the development tool 800. Tooltip positioningalgorithm may determine, created and included into the output file 825by the unit type generator 820. Tooltip positioning algorithm may bedeployed together with the unit type 835 to the client 130 and be loadedand used while displaying unit type 835 on the client computer 130.

Because this embodiment of the tooltip positioning algorithm picks onlyfrom four positions within which the unit type 835 may be displayed,there is a possibility that all four choices may be undesirable. Inorder to resolve any conflicts, a weight may be assigned to each of theavoidance nodes. The weight of the avoidance nodes may indicate whichareas are more important to avoid than others. For example, areas withiframes, flash movies, videos or graphical content may be more importantto avoid than text. In other embodiments, text is more important toavoid than a picture. An avoidance list may be used to indicate thecriteria for assigning the weight and avoiding areas. The avoidance listmay include a description of a node to avoid, such as an area or aparticular content and the importance weight to be assigned to any suchnode.

Tooltip positioning algorithm may operate in accordance with a set ofsteps. In one step, a tooltip positioning algorithm may calculate theavoidance total for each position state. In another step, a tooltippositioning algorithm may also calculate a list of avoidance nodes foreach position state. In yet another step, tooltip positioning algorithmchecks each position state for zero avoidance nodes or nodes on whichthe tooltip 550 may be displayed freely without any avoidance weight. Ifa position state with zero avoidance node is found, tooltip 550 isplaced within such area. If no position state with zero nodes is found,tooltip positioning algorithm may set avoidance weight level (AWL) to 0.Tooltip positioning algorithm may check each position state for zeroavoidance nodes that have avoidance weight equal to the AWL. If aposition state is found to satisfy such request, tooltip 550 may beplaced. If a position is not found, tooltip positioning algorithm maycheck for other possibilities. Other possibilities may include locationswhich should be avoided or have an assigned weight of avoidance, butwhich are weighted less than other locations which should also beavoided. In such instances, an area that is weighted least may be pickedas the area in which the tooltip 550 will be placed.

In instances in which there are no available areas within which thetooltip may be placed, a determination may be made of whether or not theAWL is equal to max avoidance weight. In some embodiments, the tooltip550 may be simply placed above and to the right of the hooked keyword.In other embodiments, a determination is made whether or not an AWL fora particular position is smaller than the maximum avoidance weight ofall possible locations within which the tooltip 550 may be placed. Ifsuch AWL for a position is found to be smaller than the maximumavoidance weight, a determination may be made to see if any otherposition state has a weight of avoidance that is smaller than the AWL.If such a position is found, then the location with least importantcontent to cover with tooltip 550 is identified and the tooltip 550 maybe placed in this location. If no preferred location is found, tooltip550 may be placed above and to the right of the keyword.

Avoidance list identify nodes to be avoided while positioning thetooltip 550 or unit type 835. Avoidance list may identify which contentsto avoid and what weight to assign to each content in order to determinewhich content should be avoided more than other. In one embodiment,iframe may be identified as an area to avoid. In another embodiment, anobject or an embed tag comprising media or flash movies may be avoided.In further embodiments, avoidance list identifies script parameters orcontents to avoid. Object to avoid may also include or be associatedwith rules, instructions, tags or names that may be used by the tooltippositioning algorithm.

Referring now to FIG. 8K, an embodiment of steps for creating, via adevelopment tool, a unit type for display on a web page responsive to akeyword on the web page is illustrated. At step 860, a unit typetemplate 810 for creating a unit type 835 is identified via adevelopment tool 800. At step 862, a user of the development tool 800may select one or more media blocks 815 to populate the unit type 835.At step 864, the user may insert selected media blocks 815 into unittype 835 content. At step 866, the development tool 800 may generate anoutput file 825 comprising a script code that defines the unit type 835along with the unit type content. At step 868, a browser 515 on a remoteclient 130 may load the unit type 835 along with the selected mediablocks 815 of the unit type content based on the output file 825. Atstep 870, the browser 515 may display the unit type 835 along with theselected media blocks 815 in response to a keyword of a web page 517loaded by the remote client 130.

At step 860, a user or a designer of a unit type 835 may identify, via adevelopment tool 800, any unit type template 810 to create a new,predetermined or customized unit type 835. In some embodiments, a useridentifies a unit type template that includes a tooltip 550 foraugmenting a keyword on a web page 517. In further embodiments, the useridentifies the unit type template 810 comprising tooltip 550 having apredetermined set of design and functional elements. The predeterminedset of design and functional elements may comprise a particular numberof cells, rows or columns, a particular number size or shape of tooltip550 or a particular functionality or feature of the tooltip 550. Thepredetermined set of design and functional elements may include afunction of the tooltip 550 such as a dynamic size of a cell, row or acolumn or a dynamic or changeable shape of a cell row or column. In someembodiments, the predetermined set of design and functional elementsincludes a predetermined settings, order or layout of tooltip 550components, such as the header 841, footer 842, side bars 843, slidingwindows 844 and/or tail 845. In other embodiments, the predetermined setof design and functional elements includes a particular number of cells,rows and/or columns defined within a content comprising portion of theunit type template 810. In some embodiments, the user creates, via thedevelopment tool, the unit type 835 based on a unit type template 810selected from a plurality of unit type templates 810.

At step 862, the user may select any type and form of content to insertinto the unit type template 810 or the unit type 835. In someembodiments, the user select, via the development tool, a media block815 to add to the unit type. The user may select a generic media block815 or a media block 815 customized for a particular feature, such as anadvertisement, video or a flash movie. In some embodiments, the userselects a media block 815 comprising a text, a portion of a web page ora link to a web page. The user may select, via the development tool, anadvertisement footer component to add to the unit type. Theadvertisement footer component may comprise a media block 815 designedto fit within footer 815 of the tooltip 550. In further embodiments, theuser selects, via the development tool, the media block 815 thatincludes a video media, an audio media or a hyperlink to a web page. Theuser may select any number of media blocks 815 to populate into anynumber of cells of the unit type template 810 or unit type 835.

At step 864, the user may insert selected media blocks 815 into anyportion of unit type template 810, such as to create a new unit type835. As the unit type template 810 is populated and/or modified by theuser, the unit type template 810 may become a customized unit type 835.In some embodiments, the user drags and drops the selected media block815 into a cell, row or a column of the unit type template 810 via auser interface of the development tool 800. In further embodiments, theuser drags and drops a plurality of media blocks 815 into a plurality ofrows, columns and/or cells of the unit type template 810 or unit type835. In further embodiments, the user drags and drops a plurality ofselected media blocks 815 into a single cell, a single row or a singlecolumn of the unit type template 810 or unit type 835. The user mayplace, via the development tool, the media block component into a cellin a design layout of the unit type 835. In some embodiments, the userarranges, via the development tool, a location of the media blockcomponent and one or more text block components in a design layout ofthe unit type. In further embodiments, the user modifies the computerexecutable code corresponding to the unit type template 810 or the unittype 835. In still further embodiments, the user edits, reshapes,enables or disables any of the unit type 835 components, such as aheader 841, a footer 842, a side bar 843, a tail 845 or a sliding window844. In yet further embodiments, the user includes, excludes or modifiesevents for performing particular actions of the unit type 835. In yetfurther embodiments, the user includes a functionality of another unittype template 810 into the unit type 835.

At step 866, the development tool 800 generates an output file definingthe unit type 835 along with the contents included into the unit type835. In some embodiments, a unit type generator 820 generates the outputfile. In further embodiments, the output file is generated to includethe script code defining the layout of the unit type. The layout of theunit type may include a set of cells and rows within a predeterminedsized container. In some embodiments, the layout includes one or morecells. In other embodiments, the layout includes one or more rows. Infurther embodiments, the layout includes one or more columns. In stillfurther embodiments, the layout includes a combination of cells, rowsand/or columns. Media blocks 815 may be comprised within each of thecells of the set of rows and cells. In some embodiments, a plurality ofmedia blocks 815 is comprised within a single cell. In furtherembodiments, a plurality of media blocks 815 is comprised within a rowof the set of cells and rows. The script code of the output file mayprovide execution direction for rendering media of the media blockcomponent while displaying the unit type. In some embodiments, thedevelopment tool creates a file for the unit type 835. The file maycomprise the generated script code corresponding to the unit type 835.In further embodiments, the output file comprising the script code todefine properties of the tooltip 550 is generated. In yet furtherembodiments, the script code to include functions for the media blocks815 is generated.

At step 868, a browser 515 on a client 130 may load the unit type 835along with media blocks 815 of the unit type content based on the outputfile. In some embodiments, the agent of the browser receives the outputfile 825 and based on the script corresponding to the unit type 835loads, creates or recreates the unit type 835. In further embodiments,the agent and/or browser creates the layout of the unit type defined bythe set of cells and rows within a predetermined sized container. Infurther embodiments, the agent and/or browser creates or acquires theselected media blocks 815 that are placed in the cell, row or column ofthe unit type 835. The agent and/or browser may receive the media blocks815 from the server 110 and repopulate the unit type 815 using theselected media blocks 815. The agent and/or browser may load and preparethe unit type for display in response to the script code providingexecution direction for rendering media of the media block componentwhile displaying the unit type. The agent and/or browser may also loadthe media blocks 815 and prepare for displaying the media blocks withinthe designated portions of the unit type 835.

At step 870, the browser 515, such as via agent, may display the unittype 835 and the selected media blocks 815 in response to a keyword of aweb page 517 loaded by the client 130. In some embodiments, the client130 loads a web page 517 comprising a keyword. The keyword may beaugmented and in response to a mouse-over the augmented keyword by theviewer, the browser may display the unit type 835. The unit type 835displayed on the client 130 screen may include the selected media blocks815 inserted into the content of the unit type 835 or the unit typetemplate 810 used to create the unit type 835. In some embodiments, thebrowser displays the unit type 835 comprising the media blocks 815located within cells, rows and/or columns as inserted by the user atstep 864. In further embodiments, the browser displays unit type 835comprising each feature, media block 815, content or functionality asprepared, described or defined by the user at step 864. The browser 515may display the unit type 835, such that a tail 845 of the unit type 835points at the augmented keyword in response to which the unit type 835is displayed. In some embodiments, the tail 845 is moved to a differentportion of the unit type 835 in response to identification of theavoidance node on the web page 517. In further embodiments, unit type835 is displayed over a portion of the web page 517 that does notinclude an avoidance zone in order to avoid displaying the unit type 835over the avoidance zone. Unit type 835 may be displayed over a portionof the web page 517 having a lower avoidance zone weight in order toavoid displaying of the unit type 835 over the portion of the web page517 having a higher avoidance zone weight.

1. A method for creating via a development tool a unit type for displayon a web page responsive to a keyword on the web page, the methodcomprising: (a) identifying, via a development tool, a unit typetemplate for creating a unit type, the unit type comprising a tooltipfor augmenting a keyword on a web page; (b) selecting, by a user via thedevelopment tool, a media block component to add to the unit type; (c)placing, by the user, the media block component on a layout of the unittype; and (d) generating, by the development tool, script code to definethe layout of the unit type as a set of cells and rows within apredetermined sized container, the media block component placed in acell and a row of the set of cells and rows, the script code providingexecution direction for rendering media of the media block componentwhile displaying the unit type. 2-20. (canceled)